본문 바로가기

MicroService

(11)
마이크로서비스 아키텍처 구축 - 7장.테스팅 테스트의 종류 일반적으로 단위테스트 작성과 단위테스트를 통한 자동화 테스팅에는 익숙해져 있다. ( 나는 아직 그것도 부족하지만... ) 하지만, 분산 시스템 영역에서의 테스트를 어떻게 해야할까? 마이크로서비스에서의 테스팅은 광범위한 분야를 다룬다. 단위 테스팅 : 좁은 범위의 단위 테스트 속성(성능) 테스팅 : nGrinder와 같은 성능 테스트 인수 테스팅 : 넓은 범위의 end to end 테스트 탐색 테스팅 : 고객에 의한 최종 테스팅 테스트를 작성하다 보면 자동화 테스트의 경우 얼마나 많이 작성해야 할지 모호할 때가 있다. 단위테스트야 커버리지 100% 가져가면 좋지만, 통합테스트는 얼마나 짜야할지 모호한 경우가 많다. 테스트의 범위 아래 쇼핑물을 예제로 테스트 종류를 살펴보자. 1. 단위 테스트..
11번가 Spring Cloud 기반 MSA로의 전환 - 발표정리 11번가 Monolitic일때 상황 ( 16년 말 ) 공통 모듈만 200만 라인 빠르고 다양한 비즈니스 발전으로 인한 if문 추가추가..... 코드 양이 많다보니 IDE에 띄우는것도 힘들다 새로운 기술 접하기가 힘들다 ( dependency가 엉켜있으니까 ) 많은 개발자가 한번에 배포해야 함 잘 돌아가는데 MSA 가야하나? 나의 과감한 수정은 전사 장애다 => 개발 조직에 좋지 않은 문화 어떻게 MSA를 도입할 것인가? 업무 도메인별 ( 또는 더 자세하게 ) 별로 서버 분리 Legacy 코드에서는 새로운 API 서버 호출 DB Flag를 통해서 기존코드와 새로운 코드 switchable하게 해서 안정성 확보 어떤 솔루션을 사용할 것인가? NETFLIX OSS => Spring Cloud를 사용 Hystr..
Message-Driven 마이크로서비스 Message Driven 마이크로서비스에 관하여 이번 포스팅에서 마이크로서비스 간의 비동기 통신을 어떻게 구현하는지에 대해 살펴보자. 비동기 one-to-one, publish/subscribe 통신 스타일을 RabbitMq와 Spring Cloud Stream을 사용해서 구현해 볼 것이다. 이번 포스팅에서는Spring Cloud Stream과 관련된 용어와 개념들Binder 역할을 하는 RabbitMQ 메시지 브로커 사용하기Spring Cloud Stream 프로그래밍 모델Binding, Producers, Consumers 설정하기Spring Cloud Stream이란?Message Broker와 통신할 수 있도록 도와주는 것이다. Spring Cloud Stream으로 만들어진 applicatio..
Sleuth란? Sleuth란? MSA구조에서 클라이언트의 호출이 내부적으로 여러 마이크로서비스를 거쳐서 일어난다. 이와 같은 구조때문에 전체 트랜잭션에 대한 로그 추적이 어렵다. 이를 추적하기 위해서는 연관된 ID가 필요하다. 이러한 ID(trace, span)를 자동으로 생성해주는 것이 Spring Cloud Sleuth이다. Spring Cloud Sleuth의 ID 체계Span ID하나의 작업 단위, 각 서비스 호출시 새로운 Span ID가 생성Trace중 첫번째 생성된 Span ID를 Root Span이라 부름Trace ID최초 호출시 실행되는 서비스에서 생성 트위터의 집킨(Zipkin), 클라우데라의 HTrace 및 구글의 대퍼(Dapper)등의 UI툴을 이용하면 분산 환경의 로그 트레이싱을 쉽게 할 수 있다..
도커 컨테이너와 마이크로서비스 컨테이너화의 개념과 마이크로서비스 관점에서 컨테이너화의 타당성 마이크로서비스를 도커 이미지 및 도커 컨테이너로 만들고 배포하는 방법AWS를 활용한 클라우드 기반의 도커 배포에 관한 내용을 살펴보자. 하나의 물리적인 장비에 여러 개의 작은 가상머신을 운영하는 것은 자원 효율적이지 못하며, 결국에는 자원고갈로 이어지기 마련이다. 마이크로서비스의 원칙 중 하나는 실행환경의 하나부터 열까지 모두를 완전하게 캡슐화해서 자기 완비적이고 자율적인 특성을 유지해야 한다. 컨테이너의 장점자기 완비적 : 컨테이너 패키지는 필수적인 애플리케이션 실행 바이너리와 의존하는 모든 라이브러리를 함께 포함하고 있어서 개발, 테스팅, 운영 환경 사이에서 환경 문제로 짝이 맞지 않는 일이 없게 보장한다.가벼움 확장성 : 이미지의 크기가..
Eureka self preservation mode란 Eureka self preservation mode란Eureka는 AP만을 채택하고 있다. (http://happyer16.tistory.com/admin/entry/post/?id=168&type=post&returnURL=/manage/posts/). Inconsistency (불일치)를 최소화하기 위해 Self preservation mode란 것이 있다.
Eureka에 대해 알아보자. Microservice를 구축하면서 Service discovery는 필수이다. Netflix에서 제공해주는 Eureka에 대해 알아보자. 해당 글은 Netflix에서 제공해주는 Eureka wiki를 바탕으로 작성하였다. 1. Eureka 개요 ( http://happyer16.tistory.com/168?category=737745 )2. Eureka 2.0 아키텍처3. Eureka 2.0 클라이언트 설정하기4. Eureka 2.0 서버 설정하기5. Eureka 서버 EC2에 배포하기6. Eureka Server self preservation mode
Eureka Server란 Eureka Server란?Eureka는 Middle-tier server( 비즈니스 로직이 위치한 애플리케이션 서버단)의 로드밸런스와 Failover를 위해 서비스를 배치해주는 REST 기반 서비스이다. 이 서비스는 주로 AWS Cloud에서 사용되고, 이를 Eureka Server라 부른다. Eureka Client Java 기반 클라이언트 요소도 있는데, 서버와 상호작용을 더 쉽게 해주는 것을 Eureka Client라 부른다. 클라이언트도 Round-Robin 방식을 기본으로 사용하는 로드밸런스를 내장하고 있다. Netflix에서는, Eureka에서 기본 로드 밸런스 외에도 트래픽, 리소스 사용량, 에러 상황 요소에 따라 로드밸런스를 할 수 있도록 제공해주고 있다. Eureka Server의 필요..
스프링 클라우드 - 마이크로서비스간 통신이란 (Ribbon) 스프링 클라우드 마이크로서비스간 통신에 대해 알아보자지난 포스팅에서 서비스 발견(Service discovery)와 설정 서버(configuration Server)에 대해 알아보았다. 하지만, 이 두 설정은 단지 어플리케이션을 독립적이고 standalone하게 관리 할 수 있도록 도와주는 역할이다. 이제 내부 서비스간의 통신을 위해 HTTP 클라이언트와 클라이언트 사이드 로드밸런서를 살펴보아야 한다. 스프링 클라우드 마이크로서비스 통신에서 다루는 내용서비스 발견을 사용하는 경우와 사용하지 않는 경우에 RestTemplate 사용해보기Ribbon Client 커스터마이징Feign Client에 대한 특징 ( 리본 클라이언트, 서비스 발견, 존 등과 통합 )스프링 클라우드 마이크로서비스 통신 다양한 스타일..
Spring Cloud Overview + 적용기 스프링 클라우드를 적용하기 전에 느낀점 이번 달에 Spring Boot를 기반으로 Microservice 개발 Sprint가 끝났다. 기능 개발이 완료되고, 우리는 Spring Cloud를 적용하기러 하였다. 개발은 보통 필요에 의해 시작이 된다. 하지만, 아직 현재 작은 단위의 서비스와 작은 유저 수를 보유하고 있기 때문에 관리 차원에서도 불편함을 겪지 않고 있어 Spring Cloud가 왜 필요한지 모르겠다. ( 필자의 무지도 포함하여 ) 스프링 클라우드가 뭘 도와주는데? 이름만 살펴보면 클라우드에 기반한 개발 스타일 적용을 쉽게할 수 있도록 해준다. 그렇다면, 클라우드에 기반한 개발 스타일이 무엇일까?확장성(scable)을 가지고, 클라우드 플랫폼에 쉽게 배포할 수 있으며, 지속적인 배포가 가능하도..