SlideShare a Scribd company logo

MSA

Kitworks Team Study

1 of 19
Download to read offline
MSA
MSA
MSA
MSA
MSA
MSA

Recommended

JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)Wonjun Hwang
 
Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Wonjun Hwang
 
XSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyXSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyWonjun Hwang
 
Flutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyFlutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyWonjun Hwang
 
얕은복사,깊은복사
얕은복사,깊은복사얕은복사,깊은복사
얕은복사,깊은복사Wonjun Hwang
 
Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Wonjun Hwang
 
완전 유용한 CSS 모음
완전 유용한 CSS 모음완전 유용한 CSS 모음
완전 유용한 CSS 모음Wonjun Hwang
 

More Related Content

More from Wonjun Hwang

2024 개발 트렌드
2024 개발 트렌드2024 개발 트렌드
2024 개발 트렌드Wonjun Hwang
 
디바운싱과 쓰로틀링
디바운싱과 쓰로틀링디바운싱과 쓰로틀링
디바운싱과 쓰로틀링Wonjun Hwang
 
스마트한 팀 협업
스마트한 팀 협업스마트한 팀 협업
스마트한 팀 협업Wonjun Hwang
 
구름톤 8기 후기
구름톤 8기 후기구름톤 8기 후기
구름톤 8기 후기Wonjun Hwang
 
2024년 키워드로 알아보는 트렌드
2024년 키워드로 알아보는 트렌드2024년 키워드로 알아보는 트렌드
2024년 키워드로 알아보는 트렌드Wonjun Hwang
 
오버라이딩 조금 더 알아보기
오버라이딩 조금 더 알아보기오버라이딩 조금 더 알아보기
오버라이딩 조금 더 알아보기Wonjun Hwang
 
컴포넌트 설계
컴포넌트 설계컴포넌트 설계
컴포넌트 설계Wonjun Hwang
 
Flutter & Firebase
Flutter & FirebaseFlutter & Firebase
Flutter & FirebaseWonjun Hwang
 
이미지 최적화
이미지 최적화이미지 최적화
이미지 최적화Wonjun Hwang
 
프론트엔드 비동기 프로그래밍
프론트엔드 비동기 프로그래밍프론트엔드 비동기 프로그래밍
프론트엔드 비동기 프로그래밍Wonjun Hwang
 
트렌디 앱 - ARC & OBSIDIAN
트렌디 앱 - ARC & OBSIDIAN트렌디 앱 - ARC & OBSIDIAN
트렌디 앱 - ARC & OBSIDIANWonjun Hwang
 

More from Wonjun Hwang (20)

2024 개발 트렌드
2024 개발 트렌드2024 개발 트렌드
2024 개발 트렌드
 
디바운싱과 쓰로틀링
디바운싱과 쓰로틀링디바운싱과 쓰로틀링
디바운싱과 쓰로틀링
 
Passkey
PasskeyPasskey
Passkey
 
스마트한 팀 협업
스마트한 팀 협업스마트한 팀 협업
스마트한 팀 협업
 
AI News '23.12
AI News '23.12AI News '23.12
AI News '23.12
 
Google Analytics
Google AnalyticsGoogle Analytics
Google Analytics
 
구름톤 8기 후기
구름톤 8기 후기구름톤 8기 후기
구름톤 8기 후기
 
2024년 키워드로 알아보는 트렌드
2024년 키워드로 알아보는 트렌드2024년 키워드로 알아보는 트렌드
2024년 키워드로 알아보는 트렌드
 
상속과 구현
상속과 구현상속과 구현
상속과 구현
 
오버라이딩 조금 더 알아보기
오버라이딩 조금 더 알아보기오버라이딩 조금 더 알아보기
오버라이딩 조금 더 알아보기
 
컴포넌트 설계
컴포넌트 설계컴포넌트 설계
컴포넌트 설계
 
성능 테스트
성능 테스트성능 테스트
성능 테스트
 
WebRTC
WebRTCWebRTC
WebRTC
 
Flutter & Firebase
Flutter & FirebaseFlutter & Firebase
Flutter & Firebase
 
SOLID
SOLIDSOLID
SOLID
 
MSW
MSWMSW
MSW
 
이미지 최적화
이미지 최적화이미지 최적화
이미지 최적화
 
프론트엔드 비동기 프로그래밍
프론트엔드 비동기 프로그래밍프론트엔드 비동기 프로그래밍
프론트엔드 비동기 프로그래밍
 
트렌디 앱 - ARC & OBSIDIAN
트렌디 앱 - ARC & OBSIDIAN트렌디 앱 - ARC & OBSIDIAN
트렌디 앱 - ARC & OBSIDIAN
 
Floating Point
Floating PointFloating Point
Floating Point
 

MSA

Editor's Notes

  1. 안녕하세요, MSA를 주제로 발표 시작하도록 하겠습니다.
  2. 목차는 MSA의 개념과 특징, 적용 사례, 마무리로 구성했습니다.
  3. MSA를 발표 주제로 정하게 된 이유는, 캐스퍼 프로젝트에 참여하면서 MSA가 도입되어 있다는 것은 알고있었지만, MSA가 정확히 뭔지 제대로 알지 못하고 있다고 느껴서 주제로 선정하고 발표를 준비하게 되었습니다. *사진을 보시면 굉장히… 바이러스처럼 생겼는데 바이러스는 아니고 MSA 구조도입니다. 콩알만한 점들이 서비스들이고 각각의 서비스들끼리 선으로 이어져 있는 구조를 보실 수 있습니다.
  4. MSA의 정의를 먼저 알아보겠습니다. *MSA는 마이크로 서비스 아키텍쳐의 약자로, 아직까지 정확한 정의는 없지만, *말 그대로 작고, 독립적인 배포가 가능한 서비스들로 구성된 아키텍쳐이고, 느슨하게 결합된 서비스들의 모임이라고 할 수 있습니다.
  5. MSA가 등장하게 된 배경은 전통적 아키텍쳐 모델인 모놀리식 아키텍쳐의 단점을 해결하기 위해서 였습니다. *이 사진은 판차 라타스라고 하는 인도의 유네스코 세계 유산인데, 거대한 암석을 깎아서 만든 건축물입니다.
  6. 앞서 본 건축물과 같이 *모놀리식 아키텍쳐는 MSA에 반대되는 개념으로, *단일 코드 베이스의 애플리케이션이고, 하나의 서비스가 통합되어 거대해진 형태를 말합니다.
  7. 이해하기 쉽게 도식화 하면, 유저 인터페이스, 비즈니스 로직, 데이터 인터페이스 DB. 대강 이러한 형태로 구성되어 있습니다.
  8. 모놀리식 아키텍쳐의 특징은 아무래도 하나의 프로젝트에 코드를 다 때려 넣으니까 *개발 속도가 빠르고, *아키텍쳐가 단순해서 테스트나 배포, 기능 개선이 쉬운 편입니다. 그래서 *스타트업이나 초기 사업에 적합한 아키텍쳐입니다. 이베이나, 넷플릭스, 아마존 등의 대기업들도 초창기 시절에는 모놀리식으로 출발했다고 합니다.
  9. 단점으로는 *서비스의 크기가 커질수록 관련 기능들의 결합도가 높아지고, 배포 시간이 점점 늘어납니다. 하나로 통합되어 있어 *신규 기능을 추가하거나 버그 픽스 시에 다른 기능에도 영향을 끼칠 수 있습니다. *그리고 예전 프레임워크나 라이브러리를 쓰다가 새로운 버전으로 업데이트 하면 대참사가 벌어지기 때문에 새로운 기술 도입이 어려워 코드가 고여버리는 경우가 생깁니다. *또, 하나의 기능에서 부분 장애가 발생하면 물귀신처럼 전체 서비스가 다운되는 치명적인 문제가 있습니다. *그리고 모든 팀이 동일 프로젝트에서 작업하기 때문에 코드 머지 시 컨플릭트가 발생할 가능성이 높습니다.
  10. 모놀리식 아키텍쳐 같이 서로 복잡하게 얽혀있는 코드를 고치다보면, 이 짤 처럼 엉뚱한 다른 곳에서 문제가 발생하는 경우가 왕왕 있기 때문에 그 대안으로 MSA가 등장하게 되었습니다.
  11. 그럼 이제 MSA의 특징을 알아보겠습니다. *MSA는 느슨한 결합도로 프로그램의 수정과 신규 기능 추가가 쉽습니다. 그리고 서비스 단위로 분리되어 있기 때문에 *각각의 서비스마다 적합한 기술 스택을 선택할 수 있습니다. *그리고 서비스의 트래픽에 따라 선택적으로 확장이 가능하고, * 독립적인 아키텍쳐로 배포 부담이 줄어들고 *역할에 따른 업무 분담이 용이하다는 장점이 있습니다.
  12. MSA는 그럼 무조건 좋은거 아닌가?라고 생각할 수 있는데, 단점도 존재합니다. 개발 복잡도는 낮아질 수 있지만, 여러 서비스들을 관리하기 위한 도커, 쿠버네티스 같은 툴들을 관리하는 시간이 들고, 관리해야 할 서비스 개수 자체가 늘어나기 때문에 개발자가 적은 회사에서는 한 사람이 여러 서비스를 담당해야 하고, 운영에도 시간을 할애해야 해서 개발에 쏟을 수 있는 시간이 줄어들게 됩니다. 그리고 서비스 간 통신이 너무 많거나 하면 트랜잭션 유지가 어려워서 응답이 오래 걸리거나 누락되는 경우도 발생합니다. 또한, DB가 분리되는 것을 고려해서 서비스를 설계해야 하기 때문에 설계에 제약사항과 고민이 늘어나고, Join이 어려워집니다. 버그가 발생할 때에는 정확히 어떤 서비스가 문제인지 디버깅하기 어렵다는 단점들이 있습니다.
  13. MSA를 간단히 도식화 하면 유저 인터페이스, API 게이트웨이, 각각의 서비스들과 분리되어 있는 DB 형태입니다. 쇼핑몰로 예를 들자면, 장바구니 기능, 결제 기능, 재고 관리 기능, 회원 관리 기능 등이 분리되어 있다고 볼 수 있습니다.
  14. 앞서 말한 특징들을 표로 정리해보았습니다.
  15. 다음은 MSA의 적용 사례에 대해서 알아보겠습니다. MSA는 다양한 기업과 산업에서 적용되고 있는데, 해외에서는 넷플릭스, 우버, 아마존, 스포티파이 등의 기업이, 국내에서는 카카오, 삼성, 토스, 현대자동차 등 많은 기업들이 MSA를 도입하고 운영해오고 있습니다. 비디오, 음악 스트리밍, 실시간 운송, 이커머스 서비스, 금융 기관 등 많은 사용자에게 빠르고 안정적인 서비스를 제공하기 위한 특성을 가진 프로덕트들이 주로 MSA를 채용하고 있다는 것을 알 수 있습니다.
  16. MSA 실패 사례로는 데이터 스타트업인 세그먼트라는 기업의 사례가 있습니다. 세그먼트는 IBM, 리바이스 등의 기업이 주요 고객이었는데, 고객 데이터 분석을 한 지점에 모아서 볼 수 있는 서비스를 제공하는 기업으로, 오래된 인프라로 인한 문제 때문에 MSA로 눈을 돌렸지만, 어떤 업데이트 버전이 어느 레포에 있는지 일일이 기억하는 것에 한계를 느끼고 서비스 하나하나를 테스트하는 데 여러 명의 개발자가 필요해서 곧 향상된 모놀리식 아키텍쳐로 돌아오게 되었다고 합니다.
  17. 앞선 사례들로 미루어 보았을 때, 모든 조직에서 MSA를 도입하는 것이 항상 정답은 아니라는 것을 느꼈습니다. 서비스 규모가 크다고 해서 꼭 MSA를 도입해야 하는 것도 아니고, 미래를 위해서 처음부터 MSA를 도입하는 것도 그닥 좋은 방법은 아니라고 생각했습니다. 서비스 단위에 대한 기준이 팀 내에서 충분히 논의 된 후에 MSA를 도입할 지 말지를 정하는 것이 좋고, 아키텍쳐 모델을 변경하는 것은 시간과 비용이 많이 드는 문제이기 때문에 결정 근거가 명확해야 하고, 팀원들의 의견에 귀 기울여서 현실의 문제를 해결할 수 있는 방향으로 도입되어야 한다고 느꼈습니다.
  18. 참고한 자료들입니다.
  19. 이상으로 발표 마치겠습니다. 감사합니다.