학습 차원에서 틈틈이 해외 전문가들이 블로그나 미디어 그리고 책에서 쓴 글을 번역 또는 요약 정리하고 있습니다. 이번 포스팅도 그중 하나고요. 거칠고 오역된 부분이 있을 수 있습니다. 제대로 번역되지 않은 부분은 확인 주시면 반영토록 하겠습니다. 의미 전달이 애매한 문장은 삭제했습니다. 이번에는 Maxime가 미디엄에 올린 글을정리한 것입니다.
마이크로서비스 프로젝트를 진행해본 적 있나요? 그 프로젝트가 과도하게 설계되어 또 다른 서비스가 작동 중인지 확인하기 위해 별도 서비스가 필요했을 정도라면?나는 많은 스타트업들을 자문하거나 조언을 제공해왔다. 스타트업들은 각각 자랑스럽게 자신들의 새롭고 분해된( decomposed), 무한 확장 가능한 마이크로서비스 아키텍처를 소개했다. 그리고 매번 나는 조용히 생각했다.: 이건 6개월 안에 무너질 거라고. 아이디어가 나쁘기 때문은 아니다. 마이크로서비스는 유용하게 쓰일 수 있다. 하지만 그 자리는 보통 'WeWork에 있는 3명과 반쯤 고장난 MVP, 고객 한 명도 없는 상황'은 아니다.
아이러니한 점은? 내가 본 가장 성공적인 스타트업들 — 실제로 성공했고, 지속적으로 제품을 출시했으며, 필요 없는 인프라에 시드 라운드를 낭비하지 않은 곳들 —은 모놀리스를 사용했다.네, 모놀솔카지노다.소프트웨어 아키텍처의 소위 공룡이라고 불리는 것 말이다.
모놀솔카지노는 적이 아니다.
언제부터인가 '모놀리스'라는 단어는 비난의 대상이 되었다. '레거시'라고 부르는 것과 비슷하다. 즉시 의심스러운 눈초리를 받는다. 하지만 모놀리스를 비난하는 사람들은 대부분 CRUD(Create, Read, Update, Delete)를 넘어선 것을 만들어본 적이 없다. 반면, 실제 사용자, 매출, 성장을 하는 스타트업들은 종종 단일 리포지토리에 포스트그레스 백엔드와 큰 서비스 폴더를 갖춘 전체 비즈니스를 선보인다.그리고 그것은 작동하낟.화려하게. 모놀솔카지노는 적이 아니다. 불필요하게 앞서 나간 복잡성이 문제다.
“확장성”의 신화
스타트업들은 자신들이 확장을 위해 구축하고 있다고 스스로에게 말한다. “만약 갑자기 백만 명의 사용자가 몰린다면?” 그들은 묻지만, 그들의 가입 양식은 여전히 고장 나 있고 누구도 로그인하지 않는다.
현실을 직시하자.대부분의 스타트업은 확장할 필요가 없다. 존재해야 한다. 오래 살아남아야 자신이 무엇을 만들고 있는지 알아낼 수 있다. 방향을 빠르게 전환하고, 매일(또는 매시간) 배포해야 하며, 서비스 메쉬를 풀거나 같은 서버에 있는 두 컨테이너 간 gRPC 호출이 왜 실패했는지 디버깅하는 데 시간을 낭비하지 않아야 한다.초기 단계에서는 유연성이 확장성보다 중요하다. 단순함이 우아함을 이긴다. 이해할 수 있는 작동솔카지노
코드 눈물을 흘리게 솔카지노 분산된 코드.
모놀솔카지노를 구축하면 무슨 일이 일어날까? 일을 끝낼 수 있다.3일을 허비해 인증이 별도 서비스에 속해야 솔카지노지 고민하지 않는다. YAML을 작성해 생계를 유지하지 않는다. 다섯 개 리포지토리를 생성해 '아키텍처'라고 부르지 않는다. 그냥… 그 기능을 구축한다.
그것이 바로 최고의 팀 — 특히 경험이 풍부한 팀 — 이 모놀솔카지노를 기본으로 선택하는 이유다. 왜냐하면 그들은 이미 마이크로서비스에 따른 어려움을 겪었기 때문이다. 그 비용을 알고 있다. 그리고 규모가 충분히 커지지 않았다면 그 가치가 없다는 것도 알고 있다.
초기 Facebook? 모놀솔카지노. 초기 GitHub? 모놀솔카지노. 심지어 Amazon도 모놀솔카지노로 시작했다.
마이크로서비스의 비용은 기술적 비용만이 아니다.모두가 서비스 경계( service boundaries)와 확장성에 대해 말한다. 하지만 사기나 팀 문화에 대해 말솔카지노 사람은 없다.40개 마이크로서비스 숲에 새로운 엔지니어를 온보딩해 보라. 그 중 절반은 문서화가 되어 있지 않으며, 이름도 합리적으로 지어지지 않았다. 그들의 영혼이 조용히 몸에서 빠져나가는 것을 지켜보라.
그 다음 그들을 깨끗한, 읽기 쉬운 모놀리스에 던져보라. 기능 검색이 가능하고 실제로 찾을 수 있는 곳. “앱을 실행하는 것”이 세 개의 쉘 스크립트와 엑소시즘(exorcism, 너무 복잡하고 귀찮아서 마치 악령을 쫓는 의식이라도 해야 할 정도라는 뜻)이 필요하지 않은 곳.
사람들은 아키텍처가 속도에 미치는 영향을 과소평가한다. 마이크로서비스? 절대적으로 필요하지 않은 경우, 마이크로소프트는 당신을 느려지게 할 수 있다. 문화적으로. 로지스틱스적으로. 정신적으로.
나중에 분할할 수 있다.모놀솔카지노는 뒤집을 수 있다. 마이크로서비스는 아니다.모놀솔카지노가 너무 커지면? 괜찮다. 아픈 부분을 빼내라. 아픔이 시작될 때 추출하고, 연결 부분을 확인한 후에야. 좋은 소프트웨어는 이렇게 진화한다.: 유기적으로, 첫 번째 고객이 나타나기 전에 꿈꾸던 아키텍처 다이어그램이 아니라.
스타트업을 지속 가능하게 만드는 건 추측이 아니라, 살아남고, 빠르게 움직이며, 정신적으로 건강을 유지하는 것이다.따라서 모놀솔카지노는 구식이 아니다. 모노솔카지노는 과소평가됐다. 모노솔카지노는 당신이 게을러서 기본 옵션이 되는 것이 아니다. 당신이 현명하기 때문이다.당신은 분산 시스템 논문을 작성하는 것이 아니라 스타트업을 구축하고 있기 때문이다. 당신은 기술이 '멋진 것'에 관한 것이 아니라 '작동하는 것'에 관한 것을 알고 있기 때문이다. 그리고 언젠가, 그 신화적인 규모에 도달했을 때, 당신은 돈을 가지고, 팀을 가지고, 그리고 시스템을 올바르게 분할할 수 있는 맥락을 가질 것이기 때문이다.그때까지? 빨리 출시하라. 가볍게 유지하라 모놀솔카지노 만세!