최근 MSA와 클라우드에 대한 여러 관점을 접해보았지만, 특히 임성열 교수님의 글에서 큰 인사이트를 얻을 수 있었다. 단순한 기술 찬양이 아닌, 실무적 맥락과 비용적 관점, 적용 범위에 대한 냉철한 분석이 담겨 있었기 때문이다. 그간 막연하게 ‘MSA가 미래다’, ‘클라우드는 정답이다’라고 생각했던 나의 시야가 조금은 정돈되는 계기가 되었다. 아래는 교수님의 원문 내용이며, 이 글을 통해 필자가 정리한 생각을 함께 공유하고자 한다. (참고로 임성렬 교수님은 세계 3대 인명사전 마르퀴즈 후즈후에 등재되신 실무 전문가이시다..📚)
<임성열 교수님의 원문 내용>
안녕하세요, 임성열입니다.
"MSA와 클라우드, AI 서비스에 대한 혜안"에 대해서 의견드립니다.
[ 질문 ]
MSA(Micro software architecture)가 등장하고 수년 동안 적용해보고 업계에서는 아래와 같은 의문을 갖기 시작했다고 들었습니다.
1. 비용 대비 효율성이 나쁘지 않은가?
a. MSA가 태동하는데 나온 클라우드 비용이 절대로 더 싸지 않다. 일정 규모 이상의 트래픽을 수용하는 서비스를 만들 때, 클라우드는 매우 비싸다. MSA는 비용을 먹는 괴물이다.
2. MSA는 거의 대부분의 상황에서 풀려는 문제에 비해 Over engineering이 아닌가?
a. 오용하기도 쉽지 않은가? 작은 단위 서비스로 나누기 더 어렵다.
b. 오류 찾기가 매우 어렵다.
위와 같은 반대 의견이 나온 것으로 압니다.
저는 실용주의 관점을 보았을 때 어느 정도 수긍이 가는 입장입니다.
AI를 활용한 서비스를 만들게 된다면, 궁극적으로는 관심사에 따라 작은 서비스 형태로 분리가 필요한 것은 분명하다고 생각합니다. 다만, 일반적인 상황에서 MSA는 문제를 더 어렵게 만드는게 아닌가 하는 생각도 함께 듭니다. 예시. MSA를 적용한 Transaction 처리 등.
[ 답변 ]
MSA는 모든 케이스에 만능이 아니고, 특정 목적에 맞는 경우에 적합합니다.
또한 MSA 적용을 위해서는, 데이터에 처리에 대한 "트랜잭션 격리화" 설계가 필수입니다.
그리고 클라우드 역시 만능은 아닙니다. 다만 클라우드 클러스터링 구성 자체가
병렬 처리에 특화되어 있어서, AI 서비스 기술 발전에 큰 획을 그은 것은 맞습니다.
딥러닝이나 생성형 AI를 탄생시킨 주요 공적은 인정할 수 밖에 없을 것입니다.
일반적으로 실무에서 MSA나 클라우드는 기술은
개별 사용자 처리에 특화된 프론트엔드 업무에서 선별하여 사용합니다.
예를 들어 웹 쇼핑몰에 수천명이 동시에 접속하여 트랜잭션을 처리하더라도
본인 관심에 따른 "물품 검색 ~ 장바구니 저장 ~ 구매 등의 순"으로 이뤄지고
이 조차 독립된 개인별 데이터로 접근하여 처리하기 때문에
다른 사람이 처리하는 또 다른 "물품 검색 ~ 장바구니 저장 ~ 구매 등"의 트랜잭션과
타인의 개인 데이터에는 전혀 영향을 미치지 않습니다.
또한 일시적으로 트래픽이 몰리는 경우에도, 클라우드 특성인 Scale Out을 적용할 수 있어서
효과적입니다.
또한 머신러닝 및 딥러닝을 적용하는 경우는
업무 결과 생성된 데이터를 이용하여 모델을 만들고, 이후 인입되는 데이터를 토대로
유사한 결과를 예측, 분류, 추천 등의 행위를 하는 것이기 때문에
MSA로 설계 적용하는 것이 유리합니다.
또한 생성형 AI에서 다양한 Tool Chain을 호출하는 경우에도
독립적으로 동작하기 때문에, 이런 경우에도 MSA를 적용하는 것이 낫습니다.
그러나 고정된 업무량을 가지는 일반적인 백엔드 업무 시스템 (예, 제조 및 금융 등)에는 권고하지 않습니다.
예를 들어, "직급별 Incentive Bonus를 처리하는 트랜잭션"과 또 다른
"승진자를 처리하는 트랜잭션"이 서로 동일하게 인사 테이블을 바라보고 처리하게 되는데
이 각각의 트랜잭션들이 MSA로 설계할 경우 두 개의 트랜잭션이 서로 격리화 되지 않으면
큰 혼선을 초래하게 됩니다.
이렇게 백엔드 업무는 서로 루틴한 업무들이 밀접하게 연결되어 있기 때문에 일반적으로
MSA 설계를 적용하지 않습니다.
즉 데이터 트랜잭션 처리에 대한 고민없이, MSA를 만능처럼 적용하는 것은 매우 위험하다는 뜻입니다.
결국 일반적인 상황에서, MSA는 "트랜잭션 격리화" 설계가 되지 않을 경우
업무 시스템이 엉켜버리게 되어서 무용지물이 됩니다.
그리고 클라우드 기술 자체는 병렬처리에 특화된 기술이고 예측할 수 없는 프론트엔드 업무에서
선별적으로 사용하는데 효과적입니다.
예측 가능한 업무량을 가지는 헤비한 백엔드 업무에서는 전산실을 직접 운영하시는 것이 더 비용 효과적입니다.
따라서, 이런 경우는 클라우드를 상시 시스템으로 사용하는 것보다는
서버 노드들을 전산실에 설치하여 사용하는 것을 권고드립니다.
기업의 전산실에서도 서버노드에 리눅스 클러스터를 구성하고 컨테이너 기반으로 운영하실 수 있습니다.
"불"이나 "칼"도 적시에 적절한 상황에서 사용하면 좋은 도구가 되지만
잘못 사용하게 되면 돌이킬 수 없는 리스크를 초리해는 것과 같은 이치입니다.
따라서 AI 서비스 기술 시대에, 이런 혜안을 가지고 사회에 기여할 수 있는
IT 리더로서 여러분들의 역할이 중요하다고 생각합니다.
이 글을 통해 얻게 된 나의 인사이트
교수님의 의견을 접하고 난 뒤, 나 역시 MSA와 클라우드에 대해 단편적인 기술적 접근이 아닌, 실용적 맥락에서 재해석하게 되었다. 아래는 내 개인적인 고민과 함께 정리해 본 핵심 포인트이다..!
1. MSA는 언제나 정답이 아니다
MSA는 독립성과 확장성 측면에서는 이상적이지만, 실제 운영에서는 예상보다 복잡하고 무겁다. 서비스 간 네트워크 호출 증가, 장애 추적 어려움, 트랜잭션 정합성 이슈 등은 설계 초기 단계부터 고려되어야 한다. 특히 트랜잭션이 복잡하게 얽힌 백엔드 시스템에서는 오히려 문제를 더 어렵게 만들 수 있다.
2. 클라우드는 효율적이지만, 절대 싸지 않다
클라우드는 분명 초기 진입 장벽이 낮고 유연하지만, 트래픽이 커질수록 비용이 기하급수적으로 늘어난다. 트래픽이 예측 가능하고, 정형화된 업무가 반복되는 시스템에서는 오히려 자체 전산실 환경이 더 실용적이다. 결국 “클라우드가 무조건 경제적”이라는 생각은 환상에 가깝다.
3. 백엔드와 프론트엔드의 MSA 적용 관점
프론트엔드 업무에서는 사용자별 독립성이 보장된 구조가 많기 때문에 MSA 적용이 상대적으로 수월하다. 예를 들어 각 사용자의 장바구니, 검색, 결제 과정은 서로 간섭하지 않으므로 서비스 단위 분리가 자연스럽게 이루어진다.
반면, 백엔드는 서로 긴밀하게 얽힌 트랜잭션과 데이터 공유가 빈번하기 때문에 무리하게 나누려 하면 오히려 일관성 문제와 복잡도를 야기하게 된다. 이 차이를 이해하지 못한 채 백엔드에까지 MSA를 전면 도입하는 것은 현실적인 리스크가 큰 경우가 많다.
4. AI 서비스에서는 MSA의 구조적 장점이 살아난다
AI 파이프라인은 보통 전처리, 모델 추론, 결과 후처리 등으로 분리되며, 각 단계는 독립적으로 동작하기 때문에 MSA 구조가 적합하다. 특히 생성형 AI처럼 외부 API와 다양한 도구를 유기적으로 호출해야 하는 환경에서는 MSA의 유연성이 잘 발휘된다.
5. 기술 선택의 기준은 ‘업무의 본질’이다
기술을 선택할 때 가장 중요한 기준은 “이 기술이 우리의 문제를 해결해 줄 수 있는가”이다. 제조, 금융, 회계 시스템처럼 트랜잭션 일관성이 중요한 곳에는 여전히 모놀리식 구조가 효과적일 수 있다. 반면, 빠르게 변화하고 다양한 툴이 오가는 AI 기반의 서비스에는 MSA와 클라우드의 장점이 극대화될 수 있다.
그래서 나의 결론은? "기술은 도구일 뿐이다"
교수님의 글을 통해 한 가지 중요한 깨달음을 얻었다.
기술은 결국 ‘문제를 푸는 도구’이지, 목적 그 자체가 되어서는 안 된다는 점이다.
트렌드에 끌려 기술을 무작정 도입하는 것이 아니라, 업무의 구조, 데이터 흐름, 트래픽의 성격, 확장 계획 등 다양한 맥락을 고려해 도구를 선택하는 것이 진짜 실무의 지혜임을 느꼈다.
앞으로 AI 관련 서비스를 기획하고 개발할 때, MSA와 클라우드에 대한 이해뿐 아니라, 그것이 ‘우리 서비스에 정말 필요한가?’라는 질문을 던질 계획이다. 그리고 그 출발점에는 어제 이 값진 글을 남겨주신 교수님의 통찰이 있을 것이라 생각된다!
그리고 마지막으로
.
.
.
.
.
이번 글 포스팅을 허락해주신 임성열교수님 감사합니다 (:
'생각정리' 카테고리의 다른 글
저자님께 책 선물을 받았다(이게 바로 성덕..?) (2) | 2025.03.31 |
---|---|
트러블 슈팅: 딥러닝 모델 서빙(w/FastAPI) (0) | 2025.03.21 |
누군가 내 코드를 베꼈다 (8) | 2024.10.07 |
수용하는 자세에 대해서 (0) | 2024.08.25 |