개발 취업에 중요한 모놀리식과 마이크로서비스 아키텍처

시스템 설계 면접에도 중요한 기본 개념인 모놀리식과 마이크로서비스 아키텍처를 공유하고, 시스템 설계 면접에 적용할 수 있는 팁도 공유합니다. 1️⃣ 모놀리식 아키텍처 서비스의 모든 기능이 단일 코드베이스에 존재하면 모놀리식 아키텍처다. 2️⃣ 모놀리식 아키텍처의 단점 시간이 지날수록 단일 코드베이스에 많은 기능이 추가되어 코드베이스의 규모가 상당히 커지며, 이에 따라 코드베이스 관리가 점차 힘들어진다. 코드베이스에 한 줄만 변경해도 어플리케이션 전체를 새로 배포해야 하는 불편함이 생긴다. 코드베이스 사이즈가 커지면서 배포 및 운영 시간이 길어진다. 시간이 지나면서 많은 기능이 한 곳에 추가되어 새 개발자가 코드베이스를 이해하고 습득하기 어려워진다. 어플리케이션의 일부만 확장해도 되는데, 단일화되어 있기때문에 불필요하게 어플리케이션 전체를 확장해야 한다. 새 기술은 특정 기능에 최적화되어 있기때문에 여러 기능이 상호 작용하며 공존하는 모놀리식 시스템에 적용하기 어렵다. 작은 버그도 어플이케이션 전체 운영 중단을 발생시킬 수 있으므로 어플리케이션의 신뢰도가 낮아진다. 3️⃣ 모놀리식 아키텍처의 장점 마이크로서비스에 비해 서비스 개발, 배포 및 관리가 상대적으로 심플하다. 네트워크 대기 시간과 보안 문제가 마이크로서비스에 비해 적다. 개발자는 여러개가 아닌 단일 어플리케이셔만 습득하면 되므로 학습 속도가 빠르다. 4️⃣ 마이크로서비스 어플리케이션에 작은 단위의 기능을 다루는 서비스가 여러개 있는 경우 마이크로서비스 아키텍처라고 한다. 5️⃣ 마이크로서비스의 원칙 단일 책임: SOLID 설계 패턴의 일부로 정의된다. 클래스와 메소드 그리고 마이크로서비스와 같은 단일 유닛은 단 한 개의 기능을 가져야 한다. 비즈니스 기능 중심으로 구축: 수많은 기능이 존재하는 오늘날에는 항상 특정 기능을 구현하는데 최적화된 기술이 존재한다. 모놀리식 아키텍쳐에는 각 기능에 따라 최적화된 기술을 사용하는 게 불가능한 것이 큰 단점이다. 마이크로서스는 비즈니스 목적을 달성하는 데 가장 적합한 기술 스택 또는 백엔드 데이터베이스를 비교적 자유롭게 선택할 수 있다. 실패를 대비한 설계: 마이크로서비스는 실패 사례를 염두해두고 설계해야 한다. 어플리케이션 중 일부 마이크로서비스의 운영 중단은 전체 시스템에 영향을 미치지 않아야 하며, 유저는 운영 중단이 되지 않은 어플리케이션의 일부 기능을 사용할 수 있어야 한다. 6️⃣ 마이크로서비스의 장점 규모가 작은 마이크로서비스는 비교적 관리와 운영이 쉽다. 한 개의 마이크로서비스에 업데이트가 필요한 경우 전체 어플리케이션을 재배포하지 않아도 되며, 어플리케이션의 일부인 업데이트가 필요한 특정 마이크로서비스만 배포하면 된다. 개발자는 특정 마이크로서비스를 습득하면 되기때문에 학습 속도가 빠르다. 한 마이크로서비스에 많은 트래픽이 발생한 경우, 어플리케이션 전체를 확장할 필요 없이 특정 마이크로서비스만 확장하면 된다(따라서 상대적인 비용 절감도 발생함). 버그때문에 특정 마이크로서비스의 운영이 중단되더라도 어플리케이션의 다른 기능에 영향을 미치지 않는다. 6️⃣ 마이크로서비스의 단점 모놀리식과 다르게 분산 시스템이기 때문에 좀 더 복잡하다. 어플리케이션에 마이크로서비스의 갯수가 늘어날수록 더 복잡해진다. 독립적인 마이크로서비스들의 개발, 배포 및 운영은 상대적으로 복잡하고 어렵다. 서비스간 커뮤니케이션으로 인해 마이크로서비스의 보안은 모놀리식 아키텍처보다 취약하다. 어디에서 어떤 문제가 발생했는지 추적하는 게 상대적으로 어려워서 디버깅이 어렵다. 📌 추가: 큐레이터의 시스템 설계 면접팁 단순히 ‘마이크로서비스’가 무엇인지 묻는 면접은 많지 않습니다. 따라서 마이크로서비스나 모놀리식 아키텍처의 장, 단점을 영어 단어 외우듯이 외우는 것보다 마이크로서비스의 원칙을 잘 알아두세요. 그리고 시스템 설계할 때 마이크로서비스 원칙을 잘 적용하고 설명할 수 있는 연습하는 것이 좋습니다. 예 1: 여러 기능을 설계하는 문제라면, 단일 기능을 원칙으로 하는 마이크로서비스를 염두해 두고 설계해보자. 예 2: 대량 트레픽이 발생하는 시스템을 설계하는 문제인 경우, 마이크로서비스의 원칙과 장점에 따른 단일 기능 설계를 하되, 확장은 대량 트레픽을 다루어야 하는 특정 마이크로서비스에만 적용하자. 예 3: 특정 마이크로서비스에 적합한 데이터베이스나 최적화된 기술이 있다. 시스템을 설계할 때 무조건 요즘 많이 언급되는 단어(예: 여기 레디스 사용하고 저기에는 카프카 사용할게요)를 사용하는 게 아니라 특정 마이크로서비스에 적합한지 따져보고 장,단점을 설명하고 적용하자. 좀 더 나아가서 마이크로서비스 아키텍처를 사용한다면 단점(특히 서비스간 커뮤니케이션의 보안)을 보완할 수 있는 여러가지 설계법에 관해 알아보고 적용하는 것도 좋습니다. 🪴 함께 읽으면 좋은 글: 데이터베이스 속을 들여다보자! 관련 자료 구조는? https://careerly.co.kr/comments/76441 자주 언급되는 로드 밸런싱 알고리즘 6가지 https://careerly.co.kr/comments/77905 좋은 개발자가 알아야 할 버그 고치는데 드는 비용 https://careerly.co.kr/comments/75848 개발자가 꼭 알아야 할 클라우드 보안 팟캐스트 https://careerly.co.kr/comments/73799

Monolithic vs Microservices architecture - GeeksforGeeks

GeeksforGeeks

Monolithic vs Microservices architecture - GeeksforGeeks

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 2월 20일 오전 5:25

 • 

저장 60조회 4,803

댓글 0