IT'S DO
article thumbnail
728x90

# 마이크로서비스 아키텍처

독립적으로 배포 가능한 작은 서비스들의 조합으로 단일 애플리케이션을 설계하기 위한 방법

컴포넌트들이 작은 서비스의 단위로 분리되어 독립적으로 배포됨. 서비스의 경우 보통 도메인을 기준으로 나눔.

도메인이란 -> 게시판, 설문, 결재 등 이런 느낌들.

 

# 장점 : 

컴포넌트들 간의 결합도를 낮춘 것만으로도 앞서 모놀리식 아키텍처의 단점들을 효과적으로 해결될 수 있음.

조직이 점차 작은 조직들로 세분화 되고 각 조직이 담당한 서비스에 대해 오너쉽을 가지고 애자일하게 일하는 문화에서 좋을 수 있음.

 

※모놀리식 아키텍처는 흔히 쓰는 백엔드 한쪽에서 모든 것을 처리하고 관리하는 것 -> 문제점 그 부분 망가지면 서버 끝남.

 

# 단점 :

성능 이슈 

: 서로 독립적으로 서비스로 분리된 컴포넌트들은 이제 API 통신을 통해 데이터를 주고 받아야 하기 때문에 성능 저하가 일어남.

트랜잭션 관리의 어려움

: 서로 독립적인 서비스로 분리된 컴포넌트들 간의 발생한 트랜 잭션을 관리하기 어려워짐.

데이터 무결성 보장의 어려움

: 서비스 단위로 분리된 데이터 레이어 간의 역정규화(Denormalization)를 하게 될 경우, 해당 데이터에 대해 무결성 보장 어려움.

 

※ 정규화 
관계형 데이터베이스 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 함.
논리적 데이터 모델링 단계에서 데이터의 중복과 종속으로 인한 이상 현상을 방지하기 위해, 속성들 간의 종속 관계를 분석하여 무결성을 유지하면서
다수의 릴레이션으로 분리하는 과정

이상(anomaly) 현상
불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 수행할 때 발생하는 부작용

이상 현상 종류
삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야하는 문제;
갱신 이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
삭제 이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

※ 역정규화
역정규화란 정규화를 통해 분리되었던 릴레이션에서 중복을 허용하고 다시 통합하거나 분할하여 구조를 재조정하는 과정
정구화된 릴레이션은 하나의 릴레이션을 분해하기 때문에 원하는 자료가 하나의 릴레이션에 존재하지 않아 조인을 해서 참조해야하는 상황이 잦다.
이는 데이터베이스에 저장된 자료를 검색하는 시간을 증가시키며 성능을 저하시킬 수 있다.
따라서, 데이터베이스의 물리적 설계 과정에서 성능을 향상시키기위해 역정규화를 실행한다.

 

# MSA에서 필수적 구성

1. Service Discovery

 : 각 서비스들의 네트워크 위치 정보(IP, Port)를 저장하고 관리함. 특히 클라우드와 같이 각 서비스의 네트워크 정보가 동적으로 바뀔 수 있는 환경에서는 필수적.

 

2. API Gateway

 : 서비스에 해당하는 각 API 서버의 엔드 포인트를 단일화 하여 클라이언트의 요청을 처리할 적합한 서비스로 라우팅 함.

 

3. Circuit Breaker

: 특정 서비스에서 장애가 다른 서비스로 전파되지 않도록 함.

 

4. Message Queue 

: 서비스들 간의 통신은 비동기로 구현하여 서비스들 간의 통신으로 인한 의존성이 발생하지 않도록 함.

 

 

 

 

 

출처 : https://yesesyo.medium.com/%EA%B0%80%EB%B3%8D%EA%B2%8C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-1-fb4d7741b316

 

profile

IT'S DO

@멋진놈

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!