본문 바로가기
반응형

분류 전체보기314

[MSA] 모놀리식 데이터베이스 분해 과정 MSA에서 데이터베이스 분해하는 과정을 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조해서 정리한 내용이다. 모놀리식 데이터베이스를 분해해서 독립적인 데이터 도메인을 생성하는 5단계의 프로세스는 아래와 같다. 데이터 도메인이란 특정 도메인과 관련된 테이블, 뷰, 외래키, 트리거 등의 연관된 데이터베이스 아티팩트들의 집합이라고 할 수 있다.  데이터베이스 분해 과정 5단계1. 데이터베이스 분석 및 데이터 도메인 생성일반적인 모놀리식 시스템은 모든 서비스가 모든 데이터베이스의 데이터에 접근 가능한 구조 임(공유 데이터베이스 통합 스타일) → 데이터와 서비스가 서로 단단하게 결합되어 있어 데이터베이스 변경 관리가 어려움데이터베이스 분해를 위해서는 데이터 베이스 내에서 구.. 2024. 8. 24.
[MSA] 데이터베이스 분해인과 통합인 - 어떤 이유로 분해 또는 통합해야하는가? MSA에서 어떤 경우에 데이터베이스를 분리를 해야하는지?(분해인), 또 어떤 경우에 데이터베이스 통합을 고려해야하는지?(통합인)를 살펴본다.  데이터베이스 분해인- 데이터베이스를 분해해야하는 명분(어떤 경우, 어떤 이유로 데이터베이스 분리를 하는가?)- 데이터베이스를 분리하면 아래 표의 분해인 항목에 대한 장점을 가질 수 있다.분해인설명변경관리-  테이블,컬럼 등 변경 시 얼마나 자주 변경되고, 얼마나 많은 서비스가 영향을 받는가?    (데이터베이스 변경에 따른 서비스 변경, 테스트, 재배포 등의 범위와 영향도 줄일 수 있음)커넥션 관리- 데이터베이스가 여러 분산된 서비스와 커넥션을 맺을 수 있는가?   (데이터베이스의 최대 가용 커넥션 수에 도달 및 초과할 수 있는가?) - 서비스마다 자체 커넥션 풀.. 2024. 8. 18.
[MSA] 모놀리식 어플리케이션 분해 전략(서비스 분리) 모놀리식 어플리케이션을 분해하는 전략을 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조했다.  아래 그림은 모놀리식 분해 전략을 위한 의사 결정 트리이다. 먼저 어플리케이션이 모듈화할 명분이 있는가?를 식별한다. 다시 말해 유지보수성, 테스트성, 배포성, 민첩성, 유연성 등을 필요로 하는 모놀리식 어플리케이션인지를 판단한다. 모놀리식 어플케이션 분해(모듈화)의 필요성에 대한 자세한 내용은 아래 링크를 참조한다.https://happy-jjang-a.tistory.com/323 다음으로 분해가 가능한 코드인지를 평가한다. 코드 내부 구조가 적절한지 판별하는 절대적인 기준은 없으나, 코드의 특성을 거시적으로 살펴보는 방법들을 활용하면 내부 구조(특히, 컴포넌트/패키지 .. 2024. 8. 17.
드라이퍼스 모델 - 초보자에서 전문가에 이르는 여정 소프트웨어를 설계하고 개발하는 것은 IDE나 어떤 도구가 아니다. 바로 우리의 머리가 상상하고 창조해내는 것이다. 이를 소프트웨어와 비교하여 웻웨어(wetware)라는 말도 있다. 웻웨어(wetware)는 소프트웨어를 생각해내는 인간의 두뇌, 인간의 뇌세포나 사고과정을 의미한다. 이런 의미에서 초보자에서 전문가에 이르는 여정을 모델링한 드라이퍼스 모델에 대해 알아보고, 어떻게 성장 해야하는지 자신은 지금 어느 단계인지 생각해본다. 전문가의 특징전문가들은 그들의 행동을 세세하게 설명하지 못하는 경우가 많다. 그들의 반응은 거의 습관화되어 있어서 생각하기 전에 움직인다. 그들의 많은 경험은 뇌에서 언어를 사용하지 않는 무의식 영역에 저장되어 있기 때문에 관찰하기 어렵고 그들이 직접 말로 설명하기도 어렵다.하.. 2024. 8. 16.
[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.
반응형