Devlopment

    리액티브 프로그래밍 대 리액티브 시스템 (Reactive Programming vs Reactive Systems)

    리액티브 프로그래밍 대 리액티브 시스템 (Reactive Programming vs Reactive Systems)

    아래 글은 LightBend의 "Reactive Programming versus Reactive Systems"를 번역한 글입니다. 리액티브 프로그래밍 대 리액티브 시스템 Reactive Programming vs Reactive Systems 끊임없는 혼란과 과부하가 걸린 바다에서 단순한 반응 설계 원리 세트에 착수Jonas Boner와 Viktor Klang, Lightbend Inc. 요약2013년에 Reactive Manifesto를 공동 저작 한 이후, Reactive는 선택한 일부 기업 내에서 단지 프린지 프로젝트에서만 사용되는 애플리케이션 구축을위한 사실상 확인되지 않은 기술이 되었습니다. - 미들웨어 분야의 수많은 대기업에서 전반적인 플랫폼 전략의 일부가되었습니다. 이 글의 목표는 Rea..

    리액티브 스트림(Reactive Streams)

    Original text[1] reactive-streams.org (http://www.reactive-streams.org/) [2] reactive stream wiki (https://en.wikipedia.org/wiki/Reactive_Streams) 이 글은 위 원본 글을 번역한 글입니다. 오역이 있을 수 있습니다. 리액티브 스트림(Reactive Streams)리 액티브 스트림은 논블로킹(non blocking) 역압(back pressure)으로 비동기 스트림 처리 표준을 제공하기위한 계획입니다. 여기에는 런타임 환경 (JVM 및 JavaScript)과 네트워크 프로토콜을 위한 노력이 포함됩니다. 문제데이터의 스트림, 특히 볼륨이 미리 결정되지 않은 "라이브"데이터를 처리하려면 비동기 시..

    데이터 스트림

    스트림이란 용어가 리액티브와 같이 참 많은 곳에서 사용이 된다.데이터 스트림이란 용어도, 스트림이란 용어도 있는데 간략하게 알아보자. 데이터 스트림(Data stream)일단 데이터 스트림이란 무엇일까?다음과 같이 정의할 수 있다.데이터가 열을 지어 흐르는 것처럼 입력되는 것정해진 포맷을 사용하여 문자 또는 바이트 형식으로 송수신되는 데이터 항목의 연속적인 흐름데이터의 양이 한정되어 있지 않고 지속적으로 생성되고, 시간에 따라 값이 변하는 데이터의 흐름연속적으로 흘러들어오는 데이터 (예 : 바이트 배열)예) 주식 가격, 사용자 클릭, IoT, 게임 데이터, 사용자 행동 정보, 채팅 실시간 처리(Real-time processing)대량의 데이터를 빠르게 처리하기 위한 데이터 처리의 목표 또는 제약 사항실..

    동시성 관련 분류

    Reactive쪽으로 파고들면 파고들수록 머리가 아프다.다른 분의 말대로 정말 이것은 리택티브의 홍수이다.정리하기가 쉽지 않다. JVM 환경에서 리액티브 API • Reactor 2.5- 4세대이자 리액티브 스트림(Reactive Streams)을 기반으로 함 - https://projectreactor.io/- https://github.com/reactor/reactor-core- https://projectreactor.io/docs/core/release/api/ • RxJava 1.x- 2세대이자 가장 많이 사용되는 구현체- http://reactivex.io/- https://github.com/ReactiveX/RxJava • Akka Stream 2.x- 3세대이자 Reactive API ..

    Java9 특징

    Java 9 REPL (JShell)오라클은 쉘과 REPL(Read Evaluate Print Loop)을 위한 새로운 툴인 "JShell"을 소개한다.이것은 자바 클래스, 인터페이스, 객체 등의 생성을 매우 쉽게 실행하고 테스트하기 위해 사용된다. 프로그래밍 언어를 구현하는 방법 중에서 인터프리터(해석기) 방식이 있다. 사용자가 입력한 프로그램을 읽고 값을 계산한 다음 출력하는 일을 반복한다. 이렇게 읽고(read), 계산하고(evaluate), 출력하는(print) 반복 구조를 REPL(read-eval-print loop)이라고 한다 다운 가능한 곳 : https://jdk9.java.net/download/ G:\>jshell | Welcome to JShell -- Version 9-ea | F..

    vert.x VS Akka

    Vert.x vs akka from Chang-Hwan Han Reference[1] Vert.x VS Akka (https://java.libhunt.com/project/vertx/vs/akka)[2] Why we chose Akka for our cloud device solution(https://techblog.king.com/why-we-choose-akka-for-our-cloud-device-solution/)[3] Difference in message-passing model of Akka and Vert.x(http://stackoverflow.com/questions/21481238/difference-in-message-passing-model-of-akka-and-vert-x)[..

    리액티브 프로그래밍이란 무엇입니까? What is reactive programming?

    리액티브 프로그래밍이란 무엇입니까? What is reactive programming?이 글은 영어 글에 대해 번역한 글입니다. 일부 오역이 있을 수 있습니다. 원본 : https://medium.com/reactive-programming/what-is-reactive-programming-bc9fa7f4a7fc#.j3uzfx76t 리액티브 프로그래밍이란 무엇입니까?Reactive (프로그래밍 패러다임과 그이면의 동기)를 이해하려면 개발자와 기업이 직면한 과제를 단 10년 만에 직면한 과제와 비교하는 것이 도움이됩니다.개발자와 기업을 위한 두 가지 주요 변화는 다음과 같습니다.하드웨어의 발전인터넷모든 개발자가 직면하게 될 문제를 해결하기 위해서는 직업의 역사를 탐구해야합니다. 왜 지금 상황이 다른가요..

    1. 소프트웨어 패러다임 - 성능 그리고 동시성

    함수형 프로그래밍(functional programming)이나 리액티브 프로그래밍(reactive programming) 또는 함수형 리액티브 프로그래밍(functional reactive programming)에 대한 관심이 뜨겁다. 이러한 소프트웨어 패러다임에 있어서 늘 나오는 이야기는 비슷하다. 멀티 코어의 시대와 멀티 스레드 프로그래밍의 어려움과 문제점들이 이야기되고 모바일 시대와 IoT로 인해서 늘어나는 트래픽양이 이야기된다. 결론적으로 내가 내린 결론은 이러하다. 이러한 패러다임의 변화는 물론 개발의 편리성이나 이점들도 있지만 결국은 현대의 하드웨어에 맞춰서 소프트웨어의 성능을 최대한으로 끌어내기 위한 것이다. 성능의 중요성은 대형 서비스일수록 매우 중요하다. 페이스북이나 아마존 라인, 트위..

    동시성(Concurrency) vs 병렬성(Parallelism)

    동시성(Concurrency) 논리적인 용어동시에 실행되는 것처럼 보이는 것싱글 코어에서 멀티 스레드를 동작시키기 위한 방식하지만 멀티 코어에서도 동시성은 사용 가능함코어 수에 따른 방식보다는 작업 방식에 대한 부분인데 굳이 이해하기 좋고 좁게 보자면 이렇게 이해할 수 있을꺼 같음멀티 태스킹을 위해 여러 개의 스레드가 번갈아가면서 실행되는 성질동시성을 이용한 싱글 코어의 멀티 태스킹은 각 스레드들이 병렬적으로 실행되는 것처럼 보이지만 사실은 번갈아가면서 조금씩 실행되고 있는 것 병렬성(Parallelism) 물리적인 용어실제로 작업이 동시에 처리되는 것멀티 코어에서 멀티 스레드를 동작시키는 방식한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질병렬성은 데이터 병렬성(Data parallel..

    synchronous, asynchronous, blocking, non-blocking

    synchronous, asynchronous, blocking, non-blocking

    회사에 Toby님이 오셔서 "Async @Spring"에 대한 주제로 강의를 해주셨다.강의 중간에 동기(Synchronous)와 비동기(Asynchronous), 블로킹(blocking)과 논블로킹(non-blocking)에 대한 내용이 있었는데이해를 하고 있다고 생각했지만, 조금 내용을 꼬아서 복잡하게 생각을 하면 설명하기 어려운 난해한 부분들이 있었다.그래서 다시 정리를 할 필요가 있다고 생각되었다. 찾아보니 이 주제와 관련된 글이 많이 있다. 비동기 (Asynchronous, 非同期: 같은 시기가 아닌)동시에 일어나지 않는다는 의미바로 요청과 그 결과가 동시에 일어나지 않음 - 네트워크 프로그래밍에서 비동기비동기 read함수를 호출하면 바로 return이 됨비동기 함수를 호출할 때는 작업이 완료가 ..