분류 전체보기

    리액티브 프로그래밍이란 무엇입니까? 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이 됨비동기 함수를 호출할 때는 작업이 완료가 ..

    Rx-Java와 Java8에서의 반응형 프로그래밍 (Reactive Programming in Java 8 with Rx-Java)

    Rx-Java와 Java8에서의 반응형 프로그래밍 (Reactive Programming in Java 8 with Rx-Java)

    SlideShare에 올라온 "Reactive Programming in Java 8 with Rx-Java"[1]에 대해 일부 정리한 글입니다. - Rx-Java와 Java8에서의 반응형 프로그래밍 (Rx-Java와 Java8에서의 반응형 프로그래밍) - 1. 왜 또 다른 프로그래밍 패러다임인가?상황이 지금은 다르다.기존의 소프트웨어 응용 프로그램은 현대 기업의 요구를 충족 할 수 없습니다.우리의 소프트웨어 아키텍처 패턴 및 프로그래밍 기술에 대해 다시 생각해 볼 시간이다. 2. 반응형(Reactive)이란 실제로 무엇을 의미하는가? 자극에 대해 쉽게 반응하는 것- merriam-webster - 반응형 시스템(Reactive Systems)적시에 응답실패할 경우에도 응답을 유지다양한 작업 부하에도 응..

    Jackson에서 null string 안 보이게 설정

    아래와 같이 사용을 하려했지만 Deprecated 되었다. @JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT) 찾아보니 2. 대에서 사용법이 바뀐듯한데아래와 같이 사용을 하면 된다. mapper.setSerializationInclusion(Include.NON_NULL); 또는 @JsonInclude(Include.NON_NULL) class Foo { String bar; }

    DDD와 JPA에 대해서 알아야 하는 이유

    웹 기술에 JPA 표준기술과 그 구현체인 하어버네이트가 있다.그리고 DDD(Domain driven design) 도메인 주도 설계가 있다. DDD나 JPA에 대해서 모른다고 해도 개발하고 구현을 하는데는 아무런 문제가 없다.내 대부분의 경력 또한 두가지를 모르고 개발을 해왔고, DDD와 JPA에 대해서 잘 알고 있는 사람도 많지 않다. 그리고 이런 부분에 대해서 좋게 평가를 해주는 관리자도 많지 않으며, 어떤 관리자는 왜 팀원들이 모르는 JPA기술을 혼자만 사용했냐고 할지도 모른다.어떤 관리자는 왜 기존의 설계와 다른 DDD라는 방식을 썼냐고 반문할지도 모른다. 가끔 나 스스로도 생각을 한다.왜 JPA를 사용하려 하는걸까? iBatis와 myBatis로도 충분히 개발이 되는데?왜 DDD를 사용하려 하는..

    JPA Hibernate 사용 중 ORA-00001: 무결성 제약 조건( ORA-00001 에러

    개발 도중 이상한 에러와 직면했다.분명 무결성 제약 조건에 걸릴 일이 없는데 자꾸 무결성 제약 조건 에러가 나는 것이었다.별거 아닌데, 1시간을 넘게 에러를 찾게 되었고, 결과는 역시 JPA에 대한 사용 미숙이었다. Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 무결성 제약 조건(***.*****)에 위배됩니다 Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement org.springframework.dao.DataIntegrityViolationException: could not execute statemen..

    Spring에서 기본적인 component-scan 설정

    Spring에서 자주 하는 component-scan에 대한 설정이다.이것을 왜 하는지 모르는 사람도 많이 보았다. servlet-context에 전체 스캔을 다 해버리고 한 곳에서 잘 되는데 왜 이것을 이렇게 설정을 해두었냐는 사람도 보았다. (물론 그렇게 해도 동작은 잘 하지만..... )서블릿과 애플리케이션에 대한 분리는 인터넷이나 책에서 찾아서 공부를 하길 권장한다. ([1] 참조) 아래 xml을 보면 중요한 점은 디폴트 필터의 적용 여부와 include, exclude에 대한 차이이다.디폴트 필터는 기본적으로 true인데, true일 경우 Repository, Component, Service, Controller등에 대한 모든 annotation에 대한 객체를 생성해버린다. 그래서 servle..

    Spring에서 Pageable, Valid 설정 유의 설정

    Spring에서 Pageable 사용시 필요한 xml 설정스프링에서 Pageable을 사용하려면 아래와 같은 세팅을 해야 한다.Pageable에 대한 구현 리졸버와 정렬 리졸버에 대한 세팅을 해야 한다.그리고 여러 리졸버 사용시 DomainClassConverter와 conversionService가 필요하다.([1] 참조) 그리고 나와 같은 경우, 하단 설정을 하기 전에 이미 annotation-driven에 대한 설정이 xml 상단에 이미 되어 있었는데해당 설정을 지우지 않고 아래와 같이 설정을 했더니 아래 설정이 적용이 되지 않아서 한참을 고생했다.이미 annotation-driven 설정이 있다면 하단 설정을 지우고 해야만 한다. @Valid 설정에 대한 문제하단과 같이 "annotation-dr..