본문 바로가기

MSA해설/MSA 관련 개념18

MSA 도입 https://youtu.be/SUtQnCxkCw0 2023. 1. 6.
Monolith와 Microservices https://www.youtube.com/watch?v=SR53SKIUYPA 위의 내용에서 발췌 Monolith는 이러한 이슈에 직면할 수 있다 수요에 따른 트래픽 증가 -> 응답이 느리거나 다운 여러 형태의 Front end 대응 가능 여러 팀에 걸친 다양한 기술 스택 여러 팀이 서로 다른 시점에 배포 2022. 12. 28.
SOA vs MSA https://wiki.webnori.com/display/devbegin/SOA+VS+MSA https://wiki.webnori.com/display/devbegin/SOA+VS+MSA SOA VS MSA - DevBegin - WebNORI wiki.webnori.com 위의 내용에서 발췌 SOA(Service Oriented Architecture) MSA(MicroService Architecture) 공유할 수 있는건 최대한 공유 서비스들의 재사용에 중점 가능한 공유하지 않고 최대한 독립적/스스로 운용될 수 있도록 디자인 서비스들의 독립을 추구 2022. 12. 14.
시스템 복잡성과 생산성(Monolith, Microservices) https://martinfowler.com/bliki/MicroservicePremium.html bliki: MicroservicePremium The microservice architectural style is useful for handling complex systems, but brings its own complexity so should not be used for simpler environments. martinfowler.com 2022. 12. 13.
MSA 이해 Micro Service Architecture, MSA Microservice에 대비되는 공룡 처럼 덩치가 크고 느린 시스템을 Monolithic Architecture/Application 또는 Monolith라 한다. MSA라는 용어는 2011년 등장했고, 우선 Microservice가 왜 필요하게 되었는지 등장배경을 이해하는게 중요하다. 그리고 MSA정의 문장 하나하나 천천히 생각해보자. 현재 우리 시스템이 이러한 상황이라면 MSA 도입을 검토해 봐야 한다. 그리고 MSA를 도입하기로 했다면 이러한 공정을 참고하자. MSA 도입 시 제일 처음 만나는 문제는 서비스를 어떻게 식별할 것인가이다. 서비스를 식별하는 방법은 다양한데 그 중에서도 Event Storming 이 자주 사용된다. 어떠한 방법이.. 2022. 11. 24.
MSA 필요성 Pair Programming(PP)을 도입하면 여러 장점이 있다. 지식 공유 자연스러운 백업, 기술 이전 함께 고민, 디버깅, 해결이 빠름 업무에 집중 실시간 코드 리뷰 오류 최소화 품질 상승 팀워크 향상 궁극적으로 생산성, 품질 향상 하지만 이렇게 좋은 PP를 잘 도입하지 않는다. 왜 그럴까? 생산성 저하 비용 증가 감정 문제, 피로드 상승 등등 PP의 장점은 알지만 당장의 손해, 투자 때문에 망설이거나 포기하게 된다. MSA도 마찬가지라 생각한다. 궁극적인 방향성과 장점은 알지만, 당장 적용하기에는 어려운게 현실적인 상황이다. [우아콘2020] 배달의민족 마이크로서비스 여행기의 마지막 부분을 보면 이러한 질문을 한다. 왜 MSA를 도입하려는가? MSA가 필요한가? 당연히 모든 도메인 업무와 조직에 .. 2022. 11. 24.
MSA 등장배경 Monolith Monolithic Architecture, Monolithic Application 또는 Monolith라고 부른다. Microservice에 대비된 기존의 커다랗고 무거운 시스템 구조다. 처음에는 동그라미, 세모, 네모 각 업무별로 기능과 데이터가 정규화되어 잘 개발되었겠지만 시간이 지남에 따라 좌측과 같이 스파게티 또는 큰 진흙 덩어리가 된다. 결국 전체 영향도 파악이 어려워지고 추가/변경 요구사항을 받아들이거나 유지보수가 쉽지 않게 된다. 논리적 분리 혼재된 기능과 데이터를 논리적으로 구조화한다. 모듈화 또는 컴포넌트라고도 한다. 구축 초기에는 업무 영역별로 명확해 보이지만 이 또한 시간이 지남에 따라 다시 스파게티가 되어 간다. 첫번째 Monolith든 두번째 논리적 분리든 다음.. 2022. 11. 24.
MSA 단점 및 고려사항 MSA는 만병통치약이 아니다. MSA의 장점은 그냥 얻어지지 않는다. 공짜가 아니다. 당연히 단점이 있고, 사전에 고려해야할 사항이 있다. 제대로 준비하지 못한채 도입하려 덤빈다면, 흉내낸다면 오히려 단점만 더 부각될 것이다. 이렇게 힘든걸 왜 하자고 했느냐는 아우성만 빗발칠 것이다. 분산 환경으로 인한 복잡성 - Monolith에 비해 서비스별 분산 환경으로 복잡 - 분산 Transaction, 데이터 정합성 등 추가 설계/개발 필요 - REST API 뿐 아니라 Domain Event 특징에 맞춰 추가 설계/개발 필요 Event Driven Architecture 고려/내재화 필요 - Event 발행/구독의 장점 단점 내재화 - Eventually Consistency 이해와 내재화 API First.. 2022. 11. 24.
MSA 장점 및 도입 시 효과 MSA를 도입했을 때 얻을 수 있는 장점이다. 기존 Monolith에서도 가능했을 수 있지만 Microservice Architecture를 갖추면 훨씬 더 쉽게 아래 장점을 얻을 수 있다는 의미고, Monolith에 비해 상대적인 장점이기도 하다. 물론 MSA를 제대로 잘 적용했을 때 이야기이고, 여러가지 Anti Pattern과 같이 잘 못 적용하게 되면 아래의 장점을 얻지 못하고 오히려 그 반대 또는 더 악화될 수 있음을 명심해야한다. (Anti Pattern 참고 : https://kooangelo.tistory.com/180, https://kooangelo.tistory.com/114) 덩치 큰 Monolith에 비해 여러 작은 Service들로 구성되었기 때문에 얻을 수 있는 대표적인 잇점이.. 2022. 11. 24.
Microservice Architecture Style로 전환된다면 무엇이 가능할까? 다시 말해 크고 작은 여러 서비스들이 독립적으로 작동, 느슨하게 통신하며 서비스하고 있다면, 즉 Microservice Architecture가 갖춰졌다면 무엇이 좋을까? 기존 서비스와 다른 추가 기능이 필요한 경우 새로운 서비스를 만들어 끼워 넣기 쉽다. 기존 서비스들의 기능을 충분히 이용할 수 있다. (API, Domain Event 통신 이용) 그렇게 새롭게 끼워넣은, 추가된 서비스를 빠르게 검증할 수 있다. 만약 문제가 있다면 그 서비스는 다른 서비스와 관계없이 중지 또는 폐기가 쉽다. 이렇게 된다면 빠르고 다양하게 변하는 시장환경 및 고객 요구사항에 적시 대응할 수 있다. 궁극적으로 Business 경쟁력을 향상 시킬 수 있다. 2022. 9. 28.
현재 우리 시스템이 이렇지는 않은지? 프로세스, 기능 또는 데이터 관리 주체 불명확 주문, 원장, 처방 등 메인/공통 테이블을 여러 곳에서 쿼리 하다보니 해당 테이블 Owner팀이라 하더라도 컬럼 하나 변경/삭제 등 스키마 컨트롤이 어려움 개발조직, 지원조직, 운영조직이 달라 협조나 의사결정이 더디거나 어려움 업무 요구사항을 반영해야하는 분석설계자/개발자의 입장(요구사항)과 배포 담당자(시스템 안정성이 더 중요)의 입장 차이 예를들어 주문완료 후 처리 프로세스가 늘어나면 주문파트에 요청해서 반영을 기다려야함, 더디거나 불가능 특정 시점 또는 특정 업무 서비스에 대해서만 부분적, 일시적 확장 어려움 용량 산정을 열심히 하지만 과도/과소 산정으로 인한 효율성 저하 업무별 개별 추가/변경 요구사항에 적시 대응 어려움 (정기 배포를 기다려야하거나 .. 2022. 9. 20.
MSA 해설 MSA 관련 책, 사이트, 동영상 등은 많지만 간단한 개념 설명, 기술 중심, 코드 중심으로 뭔가 아쉽다. 왜 필요한 것인지, 무엇이 중요한 것인지, SI 프로젝트에서 무엇이 필요한 것인지 등에 대한 설명이 되면 좋겠다. MSA 도입 https://youtu.be/SUtQnCxkCw0 MSA 이해 https://kooangelo.tistory.com/190 Event Driven - Batch? Event? https://kooangelo.tistory.com/177 - Domain Event, CQRS 적용 예 (배민) https://kooangelo.tistory.com/126 - 실시간도 아니라는데 굳이 비동기 통신을 해야하나요? https://kooangelo.tistory.com/148 DB -.. 2022. 7. 14.
MSA, 준비된 조직만이 성공할 수 있다 https://www.comworld.co.kr/news/articleView.html?idxno=49710 [인터뷰] “마이크로서비스 아키텍처(MSA) 도입, 준비된 조직만이 성공할 수 있다” (2019.09.01) 위의 인터뷰 요약 + 첨언 MSA - 애플리케이션을 느슨하게 결합된 작은 구성 요소 서비스로 분해함으로써 독립적인 개발, 배포 및 운영이 가능 - 서비스 개발 팀이 보다 신속하게 새로운 기능 제공 및 확장 가능 하도록 - 이러한 MSA를 구현하기 위해서는 독립적인 배치, 확장, 운영이 가능한 서비스로 설계 필요 - 설계자는 인터페이스(API First Design) 및 데이터 정합성(Eventually Consistency) 관리 패턴 필요 - 서비스 설계 접근 방식은 서비스간의 느슨한 결.. 2022. 7. 14.
Do Not Use MSA - 마이크로서비스 아키텍처가 꼭 필요한가요? https://www.samsungsds.com/kr/insights/msa.html Do Not Use MSA - 마이크로서비스 아키텍처가 꼭 필요한가요? 위의 글 발췌, 요약, 첨언 * Don't even consider microservices unless you have a system that's too complex to manage as a monolith (마틴 파울러) -> 모놀리식으로 관리하기에 특별히 복잡한 시스템을 운영할 상황이 아니면, 마이크로서비스는 고려할 필요조차 없다 -> 복잡한 Monolith로, 확장성/장애격리/독립성에 대한 대응이 어려운 경우, MSA를 고려 아래와 같은 질문에 대답 또는 설득할 수 있어야 MSA도입의 첫걸음일 것이다 * MSA를 요구할 만큼 시스템 복잡.. 2022. 7. 7.
MSA 정의 https://martinfowler.com/articles/microservices.html Microservices Defining the microservices architectural style by describing their nine common characteristics martinfowler.com 위의 내용 중 발췌 + 첨언 The microservice architectural style MSA는 여러 아키텍처 스타일중 하나 is an approach to developing a single application as a suite of small services, 여러 (작은) 서비스들로 구성 each running in its own process 각 서비스들은 독립적으로 작동.. 2022. 6. 19.
MSA 등장, 용어정의 https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4 2022. 6. 15.
A pattern language for microservices https://microservices.io/patterns/index.html Microservices Pattern: A pattern language for microservices Microservices.io is brought to you by Chris Richardson. Experienced software architect, author of POJOs in Action, the creator of the original CloudFoundry.com, and the author of Microservices patterns. Chris helps clients around the world adopt the micros microservices.io 2022. 4. 8.
MSA, DevOps, Cross functional team https://en.wikipedia.org/wiki/DevOps https://en.wikipedia.org/wiki/Cross-functional_team 위의 사이트에서 발췌 + 첨언 MSA의 궁극적인 목적인 독립성과 시장환경에 민첩하게 대응하기 위해서는 DevOps를 도입하면 보다 효과적일것이다. DevOps 넓은 의미로는 개발 Dev과 운영 Ops을 결합한 문화, 조직 재 정비 등을 의미하고 좁은 의미로는 CI/CD, 즉 빌드, 테스트 및 배포를 자동화하여 Rapid, Frequent, Reliable 배포가 가능하다. 기존에는 (대략의 개발 프로세스) 업무 전문가 조직(현업)에서 요구사항을 내면, 개발팀에서 분석/설계/개발하고, 테스트팀에서 (수동) 테스트후, 관리자가 승인하면, 운영팀에의해 .. 2022. 4. 7.