티스토리 뷰
[ 밑줄/연결 ]
(SOA와 마이크로서비스)
단순한 기능을 하향식 분해해서 설계하는 구조적 방법론 --> 객체 단위로 모듈화하기 위한 객체지향 방법론 --> 모듈화의 단위가 기능별로 재사용할 수 있는 좀 더 큰 콤포넌트가 되는 CBD(Component Base Development) --> 컴포넌트를 모아 비즈니스적으로 의미 있고 완결적인 서비스 단위로 모듈화하는 SOA(Service Oriented Architecture)로 이어지는 발전과정을 거쳤다.
마틴 파울러가 정의한 마이크로서비스 개념...
각 서비스와 저장소는 다른 서비스 및 저장소와 격리돼 있으며, API를 통해서만 느슨하게 연계된다. 따라서 독립적으로 확장 가능하고 하나의 서비스만 독립적으로 배포 가능하다. 또한 다른 서비스와 연계된 API에 영향을 주지 않는다면 내부의 언어나 저장소는 자율적으로 선택될 수 있다....
이처럼 특정 서비스를 구축하는 데 사용되는 언어나 저장소를 자율적으로 선택할 수 있는 방식을 가리켜 '플리글랏(Polyglot)하다'라고 표현한다....
CBD/SOA의 접근법에서는 애플리케이션은 모듈별로 분리했으나 데이터 저장소까지는 분리하지 못했다.
(마이크로서비스를 위한 조건은 무엇인가?)
혁신의 동력이 단지 우수한 기술과 개인 역량에만 의존하는 것은 아니다...
MSA는 다양한 사람들이 만나서 협업하는 방식, 조직 문화의 진화된 결과물이다...
성공을 위해서는 아키텍처 및 개인 역량에만 집중할 것이 아니라 조직 문화, 일하는 절차 등을 고려해야 한다.
(1) 조직의 변화 : 업무 기능 중심 팀
ㅇ 다기능 팀
ㅇ 업무 중심 팀과 해당 팀이 만들어 낸 느슨한 연관관계를 맺는 마이크로서비스
(2) 관리체계의 변화 : 자율적인 분권 거버넌스, 폴리글랏
ㅇ 스스로 효율적인 방법론과 도두, 기술을 찾아 적용
(3) 개발 생명주기의 변화 : 프로젝트가 아니라 제품 중심으로
ㅇ 개발 조직과 운영 조직이 분리 & 계획 --> 요구정의/기능 나열 --> 설계 --> 개발 --> 완료
ㅇ 기능들의 집합이 아니라 비즈니스를 제공하는 제품으로 바라봄. 개발 후 반응을 보고 다시 개선하는 개발 반복
(4) 개발 환경의 변화 : 인프라 자동화
ㅇ 개발 환경 준비(인프라) + 개발(분석/설계/개발) + 개발지원과정(빌드/테스트/배포) 등 전체 속도/품질이 올라가야
ㅇ 개발과 운영을 동시에 수행하는 데브옵스(DevOps) + 개발지원 환경의 자동화(Infrastructure as Code)
ㅇ ㅇㅇ
(5) 저장소의 변화 : 통합 저장소가 아닌 분권 데이터 관리
ㅇ 데이터 정규화 --> 통합 데이터베이스 사용
ㅇ 각 서비스별로 저장소 분산, 다른 서비스는 직접 호출할 수 없고 API 통해서만 접근
ㅇ 비즈니스 처리를 위해 일부 데이터의 복제와 중복 허용이 필요 --> 데이터 일관성 문제 발생
ㅇ 마이크로서비스는 데이터 일관성 문제를 해결하기 위해 두 서비스를 단일 트랜잭션으로 묶는 방법이 아니라
비동기 이벤트 처리를 통합 협업을 강조 (결과적일관성)
ㅇ 각 트랜잭션을 분리하고 큐 매커니즘을 이용해 보상 트랜잭션을 활용
(6) 위기 대응 방식의 변화 : 실패를 고려한 설계
ㅇ 내결함성(Fault Tolerance)
ㅇ 실패하지 않는 시스템 --> 실패에 빠르게 대응할 수 있는 시스템
ㅇ 실패를 감지하고 대응하기 위해 실시간 모니터링 체계 (ex: 서킷 브레이키 패턴)
소프트웨어 아키텍처란 소프트웨어를 구성하는 요소와 그 구성요소 간의 관계를 정의하는 것아키텍처를 정의하는 과정은 시스템 구축을 위한 여러 가지 비기능 요건(성능, 가용성, 보안, 유지보수성, 확장성 등)을 만족하는 다양한 해결 방법을 찾는 과정이다.
ㅇ 인프라 구성 요소 : 마이크로서비스를 지탱하는 하부구조 인프라를 구축하는 데 필요한 구성요소
ㅇ 플랫폼 패턴 : 인프라 위에서 마이크로서비스의 운영과 관리를 지원하는 플랫폼 차원의 패턴
ㅇ 애플리케이션 패턴 : 마이크로서비스 애플리케이션을 구성하는 데 필요한 패턴
내부 영역인 도메인 모델과 서비스까지 구현..
서비스 구현체가 특정 기능을 구현하기 위해 도메인 모델에 책임을 위임해서 처리하고 그것을 리포지토리를 통해 저장한다. 또한 내부 영역의 기능은 서비스 인터페이스에 의해 외부 영역에 공개된다. 내부 영역의 구조를 보면 특정 기술이 개입되지 않기 때문에 특정 기술에 대한 이해 없이도 누구나 쉽게 도서 대출 업무를 이해할 수 있을 것이다. 바로 이것이 도메인 모델링의 장점이다.
지속적인 통합이란 애플리케이션 소스코드의 변경 사항이 지속적으로 병합, 빌드, 테스트되는 것을 의미한다.
지속적인 배포란 지속적 통합을 통해 준비된 애플리케이션이 테스트 및 프로덕션 환경에 자동으로 배포되는 것을 의미한다.
[ 자평 ] '아..이렇게 흘러 가는구나!'를 개념과 실행 수준까지 체계적으로 알려 준 책
2021년에 읽으면서 국내 IT분야 '저자들이 이제 제대로 쌓인 경험과 지식을 잘 풀어내는구나'라는 감탄과 고맙으로 읽었던 기억이 난다.
서재를 정리할 겸, 블로거로 정리하면서 다시 훑어 봐도 여전히 좋은 책이다.
개발자가 아니라 소스코드 한 줄 한 줄 쳐보고 실행할 수준/시간이 없어서 훑어만 봤지만 만족스러운 독서 체험이있다.
특히 개념이 어떻게 구현되고, 실행되는지까지 일관되게 보여 준 6장 ~ 10장까지의 사례 연구가 좋았다.
아키텍처 설계하거나 패턴을 활용하거나 더더욱 코딩을 할 필요가 없기 때문에 이제 헤어진다... 안녕
'IT' 카테고리의 다른 글
미래를 바꾼 아홉가지 알고리즘 by 존 맥코믹(John MacCormick) (0) | 2025.02.01 |
---|---|
AI 나를 위해 일하게 하라 (1) | 2025.01.31 |
IT 트렌드 2025 by 김 지현 (0) | 2025.01.30 |
쉽게 빠르게 익히는 실전 LLM by 시난 오즈데미르 (0) | 2024.12.18 |
초보자가 만들며 배우는 딥러닝 서비스 by 김효실, 황중원 (2) | 2024.12.12 |
- Total
- Today
- Yesterday
- 제로 성장 시대가 온다
- 사회물리학
- 스케일의 법칙
- Ai
- 디지털 트랜스포메이션 엔진
- 복잡계의 새로운 접근
- 전략에 전략을 더하라
- 상대성이론
- 경계의 종말
- 부정성 편향
- 이노베이션
- 개발자에서 아키텍트로
- 참을 수 없는 존재의 가벼움
- 파괴적 혁신
- 경영혁신
- 함께 있으면 즐거운 사람
- 플랫폼의 시대
- 직감하는 양자역학
- 인공지능
- 데브옵스 도입 전략
- 양자역학
- 혁신
- 돈
- 불교
- 안나 카레니나
- 개발자가 아니더라도
- 함께 있으면 피곤한 사람
- 고도를 기다리며
- 최진석
- 당신은 AI를 개발하게 된다
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |