menu

RxJava를 활용한 리액티브 프로그래밍 정리 Vol.1

date_range 07/05/2018 11:30

1장 개요
  • RxJava란?
    • 자바와 안드로이드를 위한 리액티브 프로그래밍 구현체로, 함수형 프로그래밍의 영향을 받았다.
  • 리액티브 프로그래밍이란?
    • 데이터나 이벤트 변화의 반응에 초점을 맞춘 프로그래밍을 뜻한다. (ex. 스프레드 시트)
  • RxJava의 동작방식
    • RxJava의 핵심은 이벤트 스트림을 나타내는 Observable타입이며, 이벤트 밀어내기(Push) 방식을 지향한다.
    • Observable과 그를 구독하는 Observer(Subscriber)의 쌍으로 구성된다.
    • RxJava는 일반적으로 비동기로 동작하지만, 기본값은 동기 방식으로 되어있으며, 명시적 요청이 없다면 동시성 처리를 하지 않는다.
    • 단일 Observable은 동시성/병렬성 둘 다 허용하지 않는다. 대신 여러 비동기 Observable조합을 통해 이를 수행한다.
      • 동시성(Concurrency) : 싱글 코어에서 멀티 스레드를 동작시키는 방식, 동시에 실행되는 것 처럼 보이는 것, 실제론 번갈아 실행
      • 병렬성(Parallelism) : 멀티 코어에서 멀티 스레드를 동작시키는 방식, 실제로 동시에 작업 처리되는 것
    • onNext, onCompleted, onError 이벤트는 동시에 방출되지 않는다. 달리 말해, 하나의 Observable은 항상 직렬화되어 스레드에 안전해야 한다.
    • Observable은 느긋(lazy)하다. Observer가 구독하지 않는 한 이벤트 방출을 시작하지 않는다.
    • Observable은 재사용할 수 있다.

MSA Retro

date_range 27/04/2018 07:10

서론
  • MSA 개발을 통해 애자일 문화전파와 조직 변화를 기대했었다.
  • MSA는 넷플릭스지 라고 생각했었다. 당연히 이럴것이다 하는 기대를 가지고 시작했다. MSA라면 당연히 ~~는 있어야지 하는 생각과 ~~까지는 없어도 된다 라는 생각을 가진 사람이 있었다.

MSA에 Contract Test 적용 하기

date_range 21/04/2018 12:10

투입!
17년 가을부터 대략 8개월간 MSA 개발 프로젝트에 테스트 엔지니어로 투입되었다. 4명이서 팀을 이뤄 테스트 전략 수립, 테스트 가이드, 테스트 자동화 업무를 했다. MSA에서의 테스트를 위해 자료도 찾아보고, 프로젝트 테크 리더의 조언을 중심으로 전체 테스트 전략을 잡았다. API Integration이 많은 마이크로서비스 아키텍처이기에, Contract Test, API Integration Test, Isolated Functional Test (외부 서비스는 모두 stub하고 자기 API를 테스트하는 것으로, 우리는 이렇게 불렀다.. 검색해보니 이를 Component Test라고 많이 한다.) 등 다양한 테스트를 했는데, 특히 고민과 이슈가 많고, 어려움이 많았던 Contract Test에 대해 정리를 해보려고 한다.