본문 바로가기

Spring/Cloud

(33)
[Spring Cloud] Microservice Pattern 이번 장에서는 Microservice의 패턴에 대해서 알아본다. Event Sourcing Monolithic 방식에서는 단일 데이터베이스를 사용한다. 단일 데이터베이스를 사용하고 있기 때문에 Atomicity, Consistency, Isolation, Durable라는 특징을 완벽하게 지원한다. Microservice는 서비스마다 독립적인 프레임워크, 언어, 데이터베이스등을 선택할 수 있다.(Polyglot) 다른 서비스들이 제공하는 정보를 위해서는 API를 통해서 통신해야 한다. Microservice에서는 Monolithic방식에서 지원하는 ACID라는 속성을 완벽하게 지원하기는 쉽지 않으며 다른 방식으로 우회하여 비슷하게 동작하도록 유도한다. Commit Transaction 예를 들어 Comm..
[Spring Cloud] Microservice Architecture 이전 장(링크) 에서는 Software Architecture에 대해서 알아보았다. 이번 장에서는 Microservice Architecture에 대해서 알아보도록 한다. Monolith vs Microservice Monolith방식은 애플리케이션을 구성하기 위한 모든 구성요소를 하나의 서비스로 개발하는 방법이다. 구성요소에는 DB 접근기술, 비지니스 로직, 프론트엔드등이 포함된다. 이러한 서비스들이 서로 의존성을 가지고 패키징되고 운영서버에 배포되는 방식을 의미한다. Microservice방식은 애플리케이션을 구성하는 구성요소를 분리하여 개발하고 운영하는 방식을 의미한다. 하나의 큰 형태로 개발되는 Monolithic 방식에 비해 유지보수나 변경사항을 적용하는데 유리하다. 어떠한 비즈니스 로직이 수정..
[Spring Cloud] Software Architecture 이번 장에서는 마이크로서비스 아키텍쳐를 알아보기 위해 IT System이 어떻게 발전해왔는지 알아보도록 한다. 소프트웨어 아키텍쳐 1960 ~ 1980s(Fragile, Cowboys): 소프트웨어보다 하드웨어 사양에 맞춰서 개발하던 시절이다. 하드웨어나 시스템이 고가였기 때문이다. 이 때는 Fragile이라는 "깨지기 쉬운"이라는 뜻을 가지고 있다. 1990 ~ 2000s(Robust, Distributed): 안정화되고 분산화된 시스템 덕분에 안정성있고 성능이 높은 서비스를 유지할 수 있게 되었다. 2010s ~ (Resilient/Anti-Fragile, Cloud Native): 안정화되고 Fragile과 반대되는 Anti-Fragile 성향과 Cloud Native라는 키워드가 등장한다. 지속적..
[Spring Cloud] Docker - 서비스 실행 이전 장(링크) 에서는 도커에 대해서 알아보았다. 이번 장에서는 우리의 마이크로서비스들을 도커 이미지로 생성하고 실행시키는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. 개요 우리는 IntelliJ 또는 Gradle 커맨드를 통해서 jar 파일을 수동으로 생성할 것이다. 생성된 jar 파일을 도커 이미지로 생성하여 Docker Container를 실행시키는 방법에 대해서 알아본다. 필자의 경우 도커 환경에서의 실행을 위해 설정과 코드를 수정하고 jar파일을 생성하는 과정은 수동으로 진행하고 컨테이너를 실행시키는 단계는 docker-compose를 통해서 진행할 예정이다. docker-compose를 설치하는 방법은 아래서 다루도록 한다. 우리의 마이크로서비스들은 개발자의 P..
[Spring Cloud] Docker - 이미지 생성 이전 장(링크) 에서는 도커란 무엇인가와 도커 설치 방법에 대해서 알아보았다. 이번 장에서는 도커 이미지를 생성하고 실행하는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Docker 실행 우리의 마이크로서비스가 사용하고 있는 MariaDB를 도커 이미지로 실행하는 방법에 대해서 알아본다. 이미지 확인 hub.docker.com에 접속하여 우리가 사용하려는 이미지 파일을 확인한다. 이미지 다운로드(생략 가능) 아래의 커맨드를 입력하여 도커 이미지를 다운로드 한다. 컨테이너를 실행할 때 PC가 없다면 자동으로 다운로드 하지만 이번에는 단계를 나누어 진행한다. $ docker pull mariadb 아래의 커맨드를 입력하여 도커 이미지 목록을 확인한다. $ docker imag..
[Spring Cloud] Docker - 개요 이번 장부터는 우리가 만든 마이크로서비스들을 컨테이너화 하는 방법에 대해서 알아본다. 이번 장에서는 컨테이너화를 하기 위한 기술 중에 대표적으로 사용되는 Docker에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. 개요 가상화(Virtualization) 가상화(假像化, virtualization)는 컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어이다. "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다. 위키백과 간략하게 물리적인 컴퓨터 리소스를 다른 시스템이나 애플리케이션에서 사용할 수 있도록 제공하는 기술을 의미하며 대표적으로 플랫폼 가상화와 리소스 가상화가 있다. 하이퍼..
[Spring Cloud] Prometheus & Grafana 대시보드 이전 장(링크) 에서는 Prometheus와 Grafana를 설치하는 방법에 대해서 알아보았다. 이번 장에서는 Grafana에 Dashboard를 추가하여 이전보다 데이터를 더 편리하게 확인할 수 있도록 수정해본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Grafana Dashboard 우리는 Grafana에 JVM(Micrometer), Prometheus, Spring Cloud Gateway 세 개의 Dashboard를 추가할 것이다. JVM(Micrometer) 부터 하나씩 추가해보도록 한다. JVM(Micrometer) Get this dashboard 확인 아래의 주소로 접속하여 Dashboard를 추가하기 위해 Get this dashboard에 나와있는 코드 번호를 확인하도록 ..
[Spring Cloud] Prometheus & Grafana 설치 이번 장에서는 우리의 서비스를 모니터링하기 위한 툴인 Micrometer에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Turbine Server Turbine Server는 마이크로서비스에 설치된 Hystrix 클라이언트의 스트림 메시지를 아래와 같이 통합한다. Turbine Server는 설정 파일에 정의되어 있는 msa-service-order, msa-service-member, msa-service-delivery와 같은 Hystrix 클라이언트들의 스트림 메시지를 수집한다. 이후 Hystrix Dashboard를 통해 클라이언트로 부터 전달받은 스트림을 시각화한다. 하지만 Hystrix와 Turbine Server는 스프링 클라우드 최신 버전에는 더 이상 쓰이지 않다...