본문 바로가기

반응형

MSA (MicroServiceArchitecture)

(29)
1. UserService 생성 및 기본 정보 구현 # 구현하기에 앞서 Jar와 War의 차이점을 간단하게 설명하면 아래와 같다. jar를 내장 톰캣 서버를 포함하여 패키징을 하고 war는 내장 서버를 포함하고 있지 않은 상태에서 패키징을 하여 서버를 연동 시켜줘야 한다. 이런 차이점이 있다. # UserService를 생성하고 기본 정보를 구현한다. - 스프링 이니셜라이저 사이트에서 아래와 같이 프로젝트를 생성한다. https://start.spring.io/ 1. Eureka 서비스 실행 - 인텔리J에서 실행해도 되고, 별도의 커맨드 창을 하나 띄워서 거기서 실행을 해도 된다. 인텔리J를 사용해서 서버를 기동하게 되면 메모리나 자원을 커맨드를 활용하여 띄운것보다 많이 사용하므로, CMD 창을 하나 띄워서 Eureka 서버를 기동하자. Eureka 코드..
MSA 구성정리 with Eureka, Spring Cloud GW # Eureka와 SpringCloudGateway까지 정리된 구성은 아래와 같다. - 들어가기에 앞서, 일단 zuul과 SpringCloudGateway간의 비교를 먼저 해보면 좋을거 같다. 현재 스프링에서는 SCG를 권고하고 있는데 이유는 관리문제, 동기 비동기문제 등 여러가지가 있는데 일단 스프링에서 추천을 SCG로 했으니 SCG를 표준으로 쓰는게 맞는거 같다. 간단하게 zuul과 SCG를 비교한 표는 아래와 같다. - Worflow를 그려보면 아래와 같다. 물론 아래의 구성은 카프카 및 docker 컨테이너 환경이 적용이 안된 상태이다. 간단하게 그려보면 아래와 같다. - 위의 workflow를 번호 순서대로 설명을 해보면 아래와 같다. ① 유저이다. 실제 접속 환경은 간단하게 표현을 해서 위와 ..
MSA (LoadBalancer 실행) # MSA 아키텍처 구성을 위한 LoadBalancer 실행하기 - firstproject에서 application.yaml 파일을 아래와 같이 입력하여 랜덤 포트를 받을수 있도록 설정한다. server: port: 0 spring: application : name: first-service eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka instance : instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}} 1. vm 옵션..
MSA 아키텍처... # 다시 MSA 아키텍처에 대해서 고민을 해봐야겠다. CQRS 패턴이나 SAGA 패턴 EDA 패턴 등 이너 아키텍처 패턴에 대한 고민이 필요하고 해당 패턴을 가지고 Kubernetes에 어떤 식으로 적용할지에 대한 고민이 필요하고 스프링 클라우드 넷플릭스 유레카를 기반으로 했던 기존의 프로젝트를 어떤식으로 커스텀하여 뺄껀 빼고 남긴건 남겨서 적용할지 등 다시한번 하나하나 테스트 하면서 적용을 해봐야 할거 같다. 단기간이아닌 약간 장기간? 짬짬이 시간날때마다 테스트를 진행 해봐야 겠다. AWS 환경은 비용이 발생하니 로컬 Minikube를 최대한 활용하여, 테스트를 진행한다.
Outer Architecture와 Inner Architecture의 이해 Inner Architecture vs Outer Architecture Outer Architecture : MSA가 운영되는 환경을 정의, 예시는 아래와 같다. 우리가 생각하는 일반적인 인프라 아키텍처 구조라고 할 수 있다. Inner Architecture : 실제 비즈니스가 실행되는 각 MSA내 구조를 정의한 아키텍처이다. Inner Architecture는 위에서 설명한 Outer Architecture와는 다른 차이점이 있는데 차이점으로는 위에서 설명한 Outer Architecture는 인프라 기반의 아키텍처를 설명한 반면 Inner Architecture는 실제 비지니스가 실행되는 구조를 정의한 것이다. 내부 서비스와 관련된 architecture. 쉽게 말해 내부 서비스를 어떻게 잘 쪼개..
쿠버네티스를 활용한 MSA 아키텍처 구성 # MSA... MSA... MSA... 여기저기서 MSA에 혈안이 되어 있다. Micro Service Architecture 즉 MSA는 아래의 그림으로 설명이 가능하다. 구글링을 통해 그나마 잘 설명된 그림을 골라서 가져왔다. MSA를 구현하는데 있어서 쿠버네티스는 필수는 아니다. 하지만 쿠버네티스와 도커 환경없이 MSA를 구현하기 힘들기 때문에 MSA를 말하면 기본적으로 쿠버네티스와 도커 그리고 API Gateway를 통한 서비스 분기 정도 떠올리수 있을거 같다. 자, 그렇다면 나는 AWS를 사용하고 있으므로 AWS에서 제공하는 쿠버네티스 환경인 EKS를 기반으로 MSA를 구현하는 방법에 대해서 말해보자. 기본적인 아키텍처는 아래와 같다. (지극히 개인적인 구조이고, 추상화도 개인적으로 되어 있으..
MSA 아키텍처 설계 시 문제점 및 해결방안 문제점 1. 성능 2. 장애 격리 3. 데이터 동기화 # 성능 - 대용량 트래픽 대응 - 초당 15,000 회의 호출 발생 - 모든 시스템이 대용량 트래픽을 감당하기에는 어려움 # 장애 격리 - 내부 서비스나 DB 장애가 발생해도 서비스는 이상이 없어야 한다. # 데이터 동기화 - 데이터가 분산 되어 있음 해결방안 CQRS 아키텍처 : 명령과 조회를 철저히 분리 C : Command (명령) Q : Query (조회) R : Resposibility S : Segregation 폴리그랏 아키텍처 적용 AWS SNS, SQS 를 사용하요 데이터 동기화 진행 정리 MSA를 꼭 해야되나? 규모의 경제가 바탕이 되어야 한다. 트래픽, 시스템, 인력
모놀리틱 아키텍처와 MSA # 모놀리틱 아키텍처 단점 1. [리소스 낭비의 효과] 하나의 서비스로 묶여있기 때문에, 예를들어 USER 서비스만 스케일 아웃으로 서비스를 확장시키면 되는데, 전체 서비스를 스케일링을 해야하는 단점이 존재한다. 2. [종속적 라이브러리의 충돌] 서비스가 분산되어 있지 않기 때문에 필요한 서비스마다 라이브러리를 설치하는게아니라 전체 라이브러리를 설치해야하는 비효율적인 현상 및 라이브러리 충돌현상 발생 3. [작은 수정사항이 있어도 코드 전체를 배포 해야함] 애플리케이션이 커지면 커질수록 빌드 및 테스트 하는데 상당한 시간이 소요됨 위의 단점을 극복하기위해 MSA 즉 MicroServiceArchitect 라는 개념이 생겼으며 하나의 문화로 자리잡아 가는중... MSA의 장점 1. 서비스 단위의 빠른 개발..

728x90
반응형