일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 맛집 #익산맛집 #시장비빔밥 #전문익산맛집 #황등시장맛집 #황등시장비빔밥
- 육회비빔밥 #전주맛집 #한국음식 #먹스타그램
- 상사화 #전북고창여행 #꽃무릇
- 마이크로서비스
- 진안여행 #진안여행추천 #용담댐조각공원 #용담댐의가을
- rest 아키텍처
- msa아키텍처
- Restful API
- msa실패원인
- 폭포수개발방법론
- 데브옵스원칙
- msa
- msa특징
- 클라우드와 msa
- 마이크로서비스 #msa #클라우드네이티브 #아키텍처 #개발
- #덕숭산 #수덕사 #예산여행 #충남여행 #등산 #힐링 #템플스테이
- 클라우드네이티브 #마이크로서비스 #컨테이너 #kubernetes #서버리스 #클라우드컴퓨팅
- restful api 구성요소
- 상사화특징 #꽃무릇특징 #아가 상사화
- 부일식당 #맛집추천 #평창맛집 #산채백반 #강원맛집 #강원맛집추천 #무일식당메뉴 #부일식당리뷰 #부일식당된장찌개 #부일식당맛집
- 고창선운사 #템플스테이 #사찰여행 #여행스타그램 #한국여행 #힐링
- 골프장추천 #야간라운딩 #골프클럽q안성 #골프클럽q #골프클럽q안성코스 #골프클럽q안성이용안내 #골프클럽q안성라운딩 #골프클럽q안성라운딩결과 #골프클럽q안성골프장추천 #안성골프장추천
- 홍어 #영산포 #홍어1번지 #홍어일번지 #영산포홍어거리 #홍어정식 #홍어정식코스
- restful api인증
- 치매 #치매예방 #치매종류 #치매원인 #치매의종류 #치메증상 #dementia]
- msa실패
- 대구맛집 #손칼국수 #까꾸리웰빙손칼국수 #대구미술관맛집 #자가제면 #건강한음식
- 림프구성백혈병
- 마이크로소비스
- 용담댐 #진안여행 #전북여행 #자연여행 #힐링여행 #국내여행
- Today
- Total
holyspirit-lee 님의 블로그
MSA의 특징: 작지만 강력한 서비스들의 조화. 왜 MSA인가? 본문
MSA(마이크로서비스 아키텍쳐)는 하나의 큰 애플리케이션을 작고 독립적인 서비스들로 분리하여 개발하고 배포하는 아키텍처 스타일이다. 이러한 분리된 서비스들은 각자의 기능을 담당하며, 다른 서비스들과는 API를 통해 통신한다.
마이크로서비스는 독립적으로 배포가 가능한 작은 컴포넌트로 분리되어 있기 때문에 부하를 받는 컴포넌트를 조명하고 여러 서버에 수평 확장하기 수월하다.
전통적인 폭포수 개발 방법론
전통적인 폭포수 개발 방법론은 프로젝트의 소프트웨어 산출물이 가진 세분화 정도에 따라 다음 단점이 발생한다.
강한 결합 (tightly coupled)
비즈니스 로직 호추링 SOAP 이나 REST 같은 중립적인 프로토콜이 아닌 프로그래밍 언어 수준에서 이루어진다. 따라서 애플리케이션 컴포넌트를 조금만 수정해도 애플리케이션의 다른 부분에 문제가 생길 수 있다.
누설 (leaky)
대부분의 대규모 소프트웨어 애플리케이션은 다양한 유형의 데이터를 취급한다. 예를 들어 CRM은 고객, 판매, 제품 정보를 관리하는데 전통적 모델에선 이러한 데이터는 같은 레포지터리 안에서 같은 모델을 유지한다. 따라서 한 영역에 속한 팀이 다른 팀의 데이터에 직접적으로 접근하고 싶은 유혹을 받는다. 이렇게 되면 보이지 않는 의존성이 생겨나고 컴포넌트 내부 데이터 구조에 대한 세부 구현이 애플리케이션 전체에 유출될 수 있다. DB 테이블 하나만 수정해도 엄청난 코드 수정과 회귀 테스팅이 필요하다.
모놀리식
전통적인 애플리케이션에선 대부분의 컴포넌트를 여러 팀에서 공유되는 단일 코드 베이스에 저장하므로 코드를 변경할 때마다 전체 애플리케이션을 재컴파일하고, 통합 테스팅을 수행하고 배포해야 한다.
마이크로서비스 기반 아키텍쳐
이러한 단점을 극복하기 위해 마이크로서비스 기반 아키텍처는 기증을 제공하는 데 다음과 같이 접근한다.
제한 (Constrained)
마이크로서비스는 하나의 책임 집합을 가지며 범위가 좁다.
느슨한 결합 (loosely coupled)
마이크로서비스 기반 애플리케이션은 작은 서비스 집합이며, HTTP와 REST처럼 비독점적 호출 프로토콜을 사용하는 구현 기술에 중립적인 인터페이스로 소통한다.
추상화 (abstract)
마이크로서비스는 자신의 데이터 구조와 데이터 소스를 완전히 소유한다. 일반적으로 마이크로서비스의 데이터를 보관하는 DB는 해당 서비스에서만 접근하기 때문이다.
독립적 (independent)
마이크로서비스 애플리케이션의 모든 마이크로서비스는 서로 독립적으로 컴파일하고 배포할 수 있다.
클라우드 기반 MSA의 특징
사용자층이 다양하며 대규모
마이크로서비스는 작은 범위를 담당하고, 명확히 정의된 인터페이스를 통해 접근하므로 기능을 신속히 제공할 수 있다.
상당한 작동 시간 (uptime)이 요구
마이크로서비스는 애플리케이션 전체를 중단하지 않고도 고장과 문제를 격리할 수 있다.
독립적인 배포
각 서비스를 개별적으로 배포할 수 있어 빠른 개발과 배포가 가능하다.
기술 다양성
각 서비스에 맞는 최적의 기술 스택을 선택하여 개발할 수 있다.
확장성
필요한 서비스만 확장하여 시스템 전체의 성능을 향상시킬 수 있다.
유연성
시스템의 변화에 유연하게 대응할 수 있으며, 새로운 기능을 추가하거나 기존 기능을 변경하기가 쉽다.
장애격리
하나의 서비스에 문제가 발생하더라도 다른 서비스에 영향을 미치지 않아 시스템 전체의 안정성을 높일 수 있다.
MSA 전환을 위한 추가 고려 사항
- 조직 문화 변화 : MSA는 개발 방식, 팀 구성, 의사 결정 방식 등 조직 문화의 변화를 요구
- 보안 : 분산된 환경에서 보안 위험이 증가하므로, 각 서비스의 보안을 강화
- 비용 : MSA 도입 초기에는 비용이 증가할 수 있으므로, 장기적인 관점에서 비용 효과를 분석해야 한다.
MSA 전환 시 주의해야 할 점
- 빅뱅 방식 vs. 점진적 방식: 시스템 규모와 복잡도에 따라 적절한 전환 방식을 선택
- 기술 부채 : 기존 시스템의 기술 부채를 해결하는 데 많은 노력이 필요
- 인력 양성 : 새로운 기술 스택에 대한 교육과 훈련이 필요
MSA 전환을 위한 성공적인 방안
- 철저한 계획 : 전환 목표, 범위, 일정, 예산 등을 명확히 설정하고, 단계별 실행 계획을 수립
- 점진적인 접근 : 전체 시스템을 한 번에 전환하기보다는, 우선순위가 높은 기능이나 모듈부터 순차적으로 전환하는 것이 좋다
- 충분한 사전 준비 : 기술 환경 구축, 인력 양성, 데이터 마이그레이션 등 사전 준비를 철저히 해야 한다.
- 지속적인 모니터링 : 시스템 전환 후에도 지속적인 모니터링을 통해 문제점을 신속하게 파악하고 개선해야 한다.
- 문화 변화 지원 : MSA 도입에 따른 조직 문화 변화를 지원하기 위한 교육과 커뮤니케이션이 필요하다.