서비스 Granularity, Coarse/Fine grained가 중요해!
얼마전 성능 및 아키텍처 분석 컨설팅을 하러 국내 모 회사를 방문하여 고객대상 웹사이트 시스템을 살펴보게 되었다. 해당 시스템은 과거 Tuxedo와 직접적으로 혹은 EAI를 통해 연결되어 돌아가는 WAS기반 웹사이트였는데 이게 작년에 했던 ‘차세대 프로젝트’로 인해 중간에 ESB가 생기면서 성능상으로 다양한 문제가 발생하게 되었다. 기존에 EAI에서 하듯이 ESB를 사용해버려서 겪게된 경우인데, 아키텍트가 SOA기반에서는 보다 Coarse-grained한 설계에 심혈을 기울이지 않으면 SOA 프로젝트가 오히려 기업 IT환경에 걸림목이 될 수 있음을 보여주는 좋은 사례로 보여진다.
아래 그림은 지하철에서 퇴근하면서 타블렛pc로 잠깐 그려본 해당 시스템의 차세대 이전과 이후의 모습을 간략하게 끄적여본 것이다.

흔들리는 지하철에서 그린 그림이라 완전 초딩의 그림일기 수준이지만 이해하기는 어렵지 않을 것이다(-_-;;;;). 보통 CBD나 OOP를 통해 솔루션이나 소프트웨어를 개발하다보면 최대한 기술적이고 구현적인 부분에서의 재사용성을 높이기 위해서 기능을 쪼개고 쪼개어 Fine-Grained한 컴포넌트의 묶음으로 만들게 된다. 물론 그렇게 만들어진 컴포넌트들을 다시 비즈니스 로직을 담기 위해 Facade등을 이용하여 어느 정도의 상대적으로 Coarse-grained한 컴포넌트가 만들어지게 되겠지만 그것은 어디까지나 컴포넌트가 담겨있는 컨테이너 안에서의 시도이기 때문에 성격상 Fine-Grained한 특성을 가질 수 밖에 없고 그것이 잘못된 것은 절대 아니다.
차세대 이전의 모습을 보자. 홈페이지 시스템은 내부적으로는 잘 설계된 Framework기반 위에 구현되어 있었으며 몇몇 필요에 의해 그때 그때마다 EAI통해서 혹은 개별적으로 Legacy영역인 Tuxedo를 호출하였다. 그러다보니 Tuxedo와의 interaction에 큰 제약이나 자원 부족을 느낄 수 없었다. Tuxedo와의 이러한 강결합(Tightly coupled)이 차세대 이전에는 큰 문제시되지 않았던 반면에 차세대 이후에는 이것이 약결합(Loosely coupling) 요건과 함께 분리가 되었다.
문제는 차세대 이후에도 여전히 홈페이지 시스템은 Tuxedo를 강결합되어있는 Fine-grained형태로 사용하고 있다는 점이다. 아마도 아키텍트는 이 차세대 시스템을 설계할 때 Tuxedo부분은 bottom-up방식으로 서비스화했을 것이고 대부분의 기존에 사용하던 function들을 그대로 ESB에 올려놨을 확률이 높다. 왜냐하면 무언가 변경을 해서 어떤 side-effect가 발생할 지 모르기 때문이다. 하지만 적어도 홈페이지 시스템이 ESB를 통해 Tuxedo서비스를 호출하는 방식은 충분히 Coarse-grained한 방식으로 호출할 수 있도록 서비스화했어야 했다. 결과적으로 단 한번의 사용자 요청을 홈페이지는 그 하나의 트랜잭션 안에 기본 4개 이상의 ESB호출을 하게 만들었다. 당연히 이 홈페이지 시스템은 차세대 이전보다 느려질 수밖에 없고 결합도는 여전히 차세대 이전과 마찬가지로 Tightly coupled하다.
고객은 이러한 문제를 사후에 인식하고 서버 증설과 함께 몇몇 튜닝작업을 벌여야 했고 그것은 결국 SOA에 대한 부정적인 기억만 갖게 했을 뿐이다.
ESB를 과거 EAI처럼 쓰거나 혹은 서비스의 결합도(Coupling)와 Granularity에 대한 제대로된, 확고한 인식이 없이 아키텍처가 설계되었기 때문에 발생한 사례이다. SOA 아키텍처는 기존의 CBD와 사뭇 다른 엔터프라이 아키텍처 관점에서의 사고가 필요하다. 그 중에 중요한 개념이 바로 Coarse grained한 서비스 설계 혹은 과연 서비스는 어느 정도의 Granularity를 가져야만 하는가하는 고민이다. 그냥 무턱대고 ESB나 서비스 저장소, 혹은 웹서비스로 개발한다고 하여 SOA가 구축되는 게 아니다.
다음에는 그렇다면 서비스 Granularity란 무엇인지 디벼보겠다.
댓글
캐빈 · 2008/03/23 00:36
Thanks for your good summary :D
SOA에 대한 기본 사상 및 아키텍처에 대한 없이 ESB를 EAI 처럼 사용하는 무수히 많은 제품 벤더 중심의 접근에 대한 경고이기도 하네요.. 이런게 시장 경험으로 쌓이면 사람들의 머리속에 SOA는 역시 마케팅 용어라는 이미지만 곤고히 하게 될거 같아 걱정입니다.