반응형 개발/MSA17 [MSA] 모듈화와 아키텍처 퀀텀 시스템 및 서비스 모듈화가 왜 필요하고 이와 관련된 아키텍처 퀀텀이라는 것은 무엇인지 정리해본다. 모듈화(분산 시스템)모듈화란 시스템을 작은 단위로 분리하여 나누는 것으로 기본적으로 결합도를 낮추는 것이라고 할 수 있다. 비즈니스가 경쟁 우위를 유지하기 위해서는 아래 그림처럼 시장 출시 속도가 빨라야 하고, 이를 위해서는 민첩성이 필요하다. 기술적으로 보면 가용성, 확장성, 배포성, 시험성(테스트), 유지 보수성이 필요하다고 할 수 있다. 특히, 기술 때문에 비즈니스가 발목을 잡히지 않게 하려면 민첩성(배포성, 시험성(테스트), 유지 보수성)은 필수이다. 그리고 모듈화를 통해서 기술적인 부분들이 용이해 질 수 있다. 확장성, 탄력성 모듈화를 통해 필요한 기능만 독립적으로 리소스 낭비없이 빠른 속도로 대.. 2024. 8. 15. [MSA] 분산 트랜잭션 최종 일관성(Eventual Consistency) 구현 방법 비교 MSA에서 서비스의 성능, 가용성, 유연성 등의 이유로 강력한 동기화 대신 최종 일관성(Eventual consistency)이라는 방법으로 데이터를 동기화하는 방법을 많이 사용한다. 최종 일관성을 구현하는 패턴들을 알아보고, 각각의 장단점을 알아본다. 최종 일관성(Eventual consistency) 구현 방법1. 백그라운드 동기화 패턴외부의 서비스 또는 프로세스가 데이터 소스를 주기적으로 체크해서 데이터 소스를 서로 동기화 하는 방법데이터 동기화를 위한 시간이 가장 긴 편(배치Job, 주기적 실행 등)백그라운드 프로세스는 트랜잭션에 포함된 테이블과 데이터 소스를 알고 있어야 하고, 어떤 데이터가 변경됐는지 알아야 함백그라운드 프로세스는 이벤트 스트림, 데이터베이스 트리거, 원본/타깃 테이블 비교 .. 2024. 8. 11. [MSA] 데이터 베이스 ACID와 BASE 비교 ACID 트랜잭션먼저 ACID 트랜잰션에 대한 이해가 명확히 되어 있어야 한다. ACID 트랜잭션에 대한 이해없이 분산 트랜잭션에 대한 트레이드오프 분석은 불가능하다.원자성(Actomicity): 트랜잭션 범위 내의 작업들은 모두 커밋되거나 모두 롤백되어야 함, 모두 한 덩어리로 작업이 되어야 함일관성(Consistency): 트랜잰션 범위 내에서는 데이터베이스의 일관성 유지, 무결성 제약조건 유지격리성(Isolation): 개별 트랜잭션이 격리되서 커밋 전까지 서로 영향을 주지 않음내구성(Durability): 트랜잭션 실행으로 인한 데이터에 대한 영구 보존여러 서비스에 분산된 트랜잭션 처리는 ACID 지원이 불가능하다. 개별 서비스 단위의 ACID만 지원 가능하다.분산 트랜잭션에서는 ACID 대신 B.. 2024. 8. 11. [MSA] 서비스의 데이터 오너십(소유) 종류와 처리 방법 마이크로서비스에서 일반적으로 테이블에 데이터 쓰는(Write) 서비스가 해당 데이터에 대한 오너십을 가지게 된다. 명확하게 도메인 단위로 데이터 분리가 가능하다면 오너십이 명확해지지만, 여러 서비스가 공동 오너십을 가지는 경우 복잡해지게 된다. 데이터에 대한 오너십의 종류와 처리 및 해결 방법에 대해 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조했다. 데이터 오너십(Ownership) 종류1. 단독 오너십- 오직 한 서비만 테이블에 테이터를 쓰는 것- 가장 단순하고 명확하고 직관적이라 관리가 쉽다 2. 공통 오너십- 대부분(많은)의 서비스들이 동일한 테이블에 데이터 쓰기를 하는 경우 - 예를들어, 많은 서비스에서 공통으로 적용되는 Audit 감사 테이블 등이 .. 2024. 8. 10. [MSA] 코드 재사용 및 공유 패턴 종류 및 장단점 서비스를 구현하면서 공통되는 코드들을 재사용 및 공유하는 방법을 알아보고, 각 패턴들의 장단점을 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조했다. 코드 재사용에 수반되는 트레이드오프에 대한 분석없이 무턱대고 사용하면 아키텍처적으로 문제가 될 수 있다. 예를들어, 21초반까지 유행했던 서비스지향 아키텍처(SOA)는 지나친 재사용을 강조하여 현재까지 많은 레거시들이 변경관리와 유지보수 등으로 힘들어한다. 기본적으로 코드 재사용은 추상화를 통해서 발생하지만, 변경 빈도가 낮을 때 가치가 있다. 1. 코드 복제- 코드를 복제해서 각 서비스에 복사해서 사용하는 방법- 코드가 정적이고, 버그 위험성이 없고, 변경이 거의 없는 경우에 적합(ex. 단순 유틸리티, 어노테이션.. 2024. 8. 5. [Spring Cloud] Spring Cloud Config 개념 및 구현 Spring Cloud Config 개념 Spring Cloud Config란 분산 시스템에서 설정(Config)에 대한 외부 분리 및 중앙 저장소 역할을 지원한다. 설정을 위한 별도의 서버(Config Server)를 구성하고, 실행 중인 애플리케이션(Config Client Application)이 Config Server에서 설정 정보를 받아와서 적용하는 방식으로 동작한다. 실행 중에 설정값 변경이 필요한 경우 설정 저장소(Config Repo)만 변경하고, 애플리케이션은 갱신만 하면 된다. 따라서 설정의 변경에 따른 애플리케이션의 재빌드 맟 재기동 불필요하다. 여러 서버의 설정 파일을 중앙 서버에서 일관되게 관리 가능하다는 관리의 편의성도 있다. 단, git 서버 같은 설정 저장소에 의한 장애 .. 2024. 6. 15. [MSA] MSA 마이크로서비스 아키텍처 패턴 이해 MSA 패턴 및 기술 관련해서 CQRS, API Gateway, BFF, SAGA, 이벤트 소싱 등 많은 개념들과 기술들이 있다. 이런 개념들을 하나씩 알아가는 것도 중요하지만 좀 더 넓은 개념에서 MSA에는 어떤 문제들이 있고 이를 해결하기 위해 어떤 해결책들을 사용하는지 전체적으로 한 번 정리를 하는 것도 좋을 것 같다. 아래는 MSA 패턴으로 유명한 크리스 리처드슨이 관리하는 사이트에 나와있는 MSA 패턴을 고수준에서 바라본 그림이다. 가장 왼쪽은 어플리케이션 아키텍처 패턴으로 모놀리식과 마이크로 서비스가 있고, 나머지 오른쪽에 있는 그룹들은 마이크로 서비스 아키텍처 패턴의 문제를 해결하는 패턴들이다. 왼쪽 상단의 범례 부분에서 Motivation Pattern(선행되는 패턴), Solution P.. 2024. 5. 26. [MSA] MSA(마이크로 서비스 아키텍처)는 무엇인가?(개념, 장단점, 조건 등) MSA 배경비즈니스 Agility(민첩성): 비즈니스의 경쟁력을 위해서 끊임없고 빠른 비즈니스 변화를 IT기술을 활용해서 추구.예전에는 IT기술이 비즈니스를 후방에서 지원하는 서비스였지만 이제는 비즈니스의 근본적인 혁신을 위해 비즈니스의 주체를 IT에 맡긴다(DX)기술적으로는 결국 배포 빈도가 빠르다(ex. 아마존: 2014년, 초단 1.5회 배포를 한다) ⇒ 그만큼 서비스가 계속 개선하고 변화하고 있다는 의미다IT선진회사들은 안정적이고 빈번하게 배포를 하기 위한 방법이 무엇일까?? 를 고민하기 시작했고, 기술적인 변화를 주도하기 시작.클라우드 인프라: 원하는 시점에 필요한 만큼 빠르게 인프라 제공, 사용한만큼 비용 지불, 사용빈도에 따라 자동 Scale Out/In 처리클라우드 인프라에 적합한 어플리케.. 2024. 5. 26. 이전 1 2 3 다음 반응형