백엔드 Backend/기본 개념

Cloud Native와 MSA

달래dallae 2025. 1. 3. 13:59

Cloud Native Application

특징

1. CI/CD (지속적인 통합 / 지속적 배포)

2. MicroServices

3. DevOps

- 개발조직 + 운영조직 통합 : 마이크로서비스에 문제가 발생했을 경우에 바로 수정해서 다시 배포하는 과정을 반복

- 시스템 기획 -> 구현 -> 테스트 -> 배포 과정을 시스템 종료될때까지 무한 반복 -> 고객이 원하는 최상의 결과물 만드는 데 목적

- 기존의 방식은 개발기간이 6~10개월정도로., 고객 요구사항/변경사항 등등은 필요할 때 마다 바로 반영/수정될 수 있도록 하는 구조

- 클라우드 -> 서비스 구조를 작은단위로 분하랗여 더 자주 통합/테스트/배포 가능한 구조

4. Containers (가상화)

- 운영체제 위에 컨테이너 서비스를 작동 하고, 컨테이너에서는 공통적인 라이브러리/리소스를 공유해서 사용.

- 각자 필요한 부분에 대해서만 독립적인 영역에 실행하는 구조 -> 기존 하드웨어 가상화 기술(운영체제 위에 하이퍼바이저를 띄워 가상머신(운영체제 각각 존재))보다 더 적은 리소스, 가볍고 빠르게 운영 가능

 

 

모놀리스 방식

- Frontend + Backend + Database가 합쳐져서 하나의 팀

- SOA = service oriented Architecture

 

프론트엔드/백엔드 방식

- Frontend팀

- 서버사이드: Backend+DevOps팀(Backend,Database가 합쳐짐)

=> 프론트 변경 사항 시 프론트만 빌드하면됨. (전체를 패키징해서 빌드할 필요 x)

 

MSA 방식

- Frontend팀

- Aggregation Layer (BFF, GraphQL...)

- ProductService / Reco Service / Basket Service..등의 microservices

 

 

 

마이크로서비스

정의

1. 함께 작동하는 작은 규모의 서비스들

2. Http 통신을 이용해 리소스 API에 통신할 수 있는 작은 규모의 여러 서비스들의 묶음이 모여 하나의 어플리케이션을 구성

- 직접 database에 접속하여 데이터를 가져오는 것이 아니라, http/api 통신을 통해 정보를 가져와야 함 (예를들어 주문서비스에서 회원 정보를 가져오기 위해서는 회원api와 통신) - 외부에서도 접근 가능하게끔

(잘게 쪼개진 덩어리)

3. 각각의 서비스들은 최소한의 중앙 집중식 관리가 되어야 함 , 서로다른 프로그래밍 언어와 서로 다른 데이터 저장 기술을 사용할 수 있다.

- 마이크로 서비스는 도메인의 특성을 고려해서 구분해야하고, 그에 따라 독립적인 언어와 독립적인 데이터베이스를 사용할 수 있다.

 

- 완전하게 자동화된 배포 시스템을 사용해야 함. (앞선 Cloud Native Application의 특징)

 

- 데이터 동기화 : 메시징 서비스를 통해. 변경사항이 생기면 메시징 서비스(kafa같은)에 전달 -> 그 서비스를 구독하고 있는 다른 서비스들이 카프카에 전달된 정보를 가지고 자신의 데이터를 변경