발표자: 삼성SDS DT아키텍처그룹 임지훈 프로.
Cloud Native 환경으로 서비스를 개발하거나, 클라우드 환경으로 서비스를 이전하려고 할 때
삼성SDS에서 개발해 제시하는 전체적인 프로세스 / 아키텍처를 설명해주었던 강연.
MSA Reference Platform
- Monolitic
- '모듈' 이라는 구성요소. 실행 시 프로세스에 Link되는 구조.
- 모듈 간 결합도가 높은 편이며, Centralized된 DB에 모든 데이터 저장 / 수정.
- 일정 규모 이상이 되면 구조를 바꾸거나 변화를 만들어내기 쉽지 않다.
- MicroService
- '서비스' 라는 단위로 구성되어 있으며, 각 서비스는 API로 통신.
- 각각의 서비스는 독립적으로 배포 가능한 단위를 의미함
- Loosely Coupled.
Cloud Native Application
- 클라우드 환경에 container화된 애플리케이션이 MicroService 형태로 구현된 애플리케이션을 의미함.
- 장점으로는 Agility, Scalability, Resiliency가 있음.
Agility
특정 기능을 추가한다고 가정하면
- Monolitic
- 신규 모듈에 기능 구현. 중앙화된 DB의 스키마 수정.
- 배포 단위: 애플리케이션 전체
- 따라서 Lead time (build, test, deploy에 걸리는 시간)이 길다.
- MicroService Architecture
- 신규 서비스를 생성해서 기존 서비스에 연결하면 되는 구조.
- Lead time이 상대적으로 적게 소요된다.
Scalability
- Monolitic
- 애플리케이션 전체를 확장해야 함 - 시간, 비용소모 큼
- RDB일 경우 확장이 쉽지 않음
- MicroService Architecture
- 서비스 단위로 필요한 것만 확장 가능 - 상대적으로 적은 시간, 비용소모
- NoSQL 등 확장에 용이한 DB 사용 가능
Resiliency
ex) 특정 서비스에 문제가 생겼을 경우
- 서킷 브레이커 발동. 해당 서비스가 외부로부터 받는 트래픽 차단. 서비스 안정화 작업에 돌입
- 사용자 요청에는 Fallback 형태로 안내메시지 제공, 정상화된 이후에 다시 서비스 제공.
ex) 심각한 버그 발생
- Monolitic
- 전체 시스템 장애. 서비스 불가능
- MicroService Architecture
- 장애가 버그 있는 서비스에만 국한됨. 다른 서비스는 정상 동작함.
그럼에도 MSA를 하기 어려운 이유, 단점
- 복잡도 증가
- 오픈소스 SW 활용 증가에 따르는 어려움
- 오픈소스 간 정합성, 통합성을 고려해야 함
- 라이선스 이슈
- Infra 구성 변화
- Private Cloud를 선택할 경우 해당 cloud에 맞게끔 구조 변경이 필요
- Public cloud는 종속성 / 비용 문제
- Hybrid / Multi cloud는 운영 복잡도의 증가
삼성SDS에서는 MSA Reference Platform을 제안한다. 내부에서는 표준 스택으로 사용하고 있음
- Event Driven 아키텍처 스타일.
Saga Pattern, Message Queue, Java / Python 기반 Service 구축.
- 인증 / 권한관리
OpenID Connect 방식. Keycloak을 활용한 Customize / OIDC Provider.
JWT 토큰 사용.
- Performance
grpc, NoSQL, 분산 캐시 시스템으로 성능 향상
- Scalability, Portability
docker container 기반으로 구축 -> private / public 모두에 유연하게 적용 가능하도록 세팅
K8s의 Horizontal Pod Autoscaler 사용. 기준에 따라 자동으로 scale in / out
- 모니터링
Implementation
- 각각의 영역에서 사용하고 있는 기술들.
- SaaS의 경우 Multi Tenancy : 논리적 격리
HPA : Horizontal Pod Autoscale을 의미하는 듯.
Backing Service HA: 이중화 / 클러스터링 가이드 제공.
Open Source Stack
대략 30여 개의 검증된 오픈소스 사용중. Product Validation도 추가로 수행하고 있음.
- OSS 검증
- Security 검증
- 기능 검증
- Performance 검증
'학습일지 > architecture' 카테고리의 다른 글
Kakao Tech Meet - 폭증하는 카카오톡 트래픽에 대처하는 방법 (0) | 2023.10.25 |
---|---|
KubeCon 2022 NA - How to build a Distributed System (0) | 2022.12.11 |
WoowaCon 2022 - 회원 시스템 이벤트 아키텍처로 구축하기 (0) | 2022.10.27 |
Complete Jenkins Pipeline Tutorial | Jenkinsfile explained 정리 (0) | 2022.04.10 |
IBM Cloud - CI & CD 개념정리 (0) | 2020.08.26 |