본문 바로가기

블로그

LG CNS 기술블로그 DX Lounge에서 최신 IT 소식을 만나보세요!

솔루션

LG CNS의 주목받는 개발방법론, ‘MDD’에 대한 9문 9답

2016.11.21

최근 대형 금융 차세대 프로젝트 수주 전에 개발방법론이 뜨거운 감자로 주목 받고 있습니다. 특히 올해 상반기 금융권 시스템 구축 사업 중 최대 규모인 교보생명 차세대 사업 우선협상 과정에서 개발방법론이 이슈가 되면서, 우선협상자의 지위가 타사에서 LG CNS로 바뀌었고, 최근에는 타사에서 MDA(Model Driven Architecture)에 기반한 개발방법론을 새롭게 출시하기도 했는데요.

오늘은 세간에 떠도는 MDD(Model Driven Development)에 대한 여러 소문에 대해 속시원한 답을 구해보고자 금융•공공사업부 MDD기술팀의 장경희 차장님을 직접 만나 궁금한 것을 질문하고 답변을 들어보겠습니다.

LG CNS MDD기술팀 장경희 차장님과의 9문 9답

Q-1. 요즘엔 다른 회사에서도 MDD와 유사한 개발 방법론을 출시하고 있는데요. 어떻게 생각하시나요?

드디어 올 것이 왔다고 생각했지요. 몇 년전 아직 MDD가 시장에 확산되지 않았을 무렵, 금융 차세대 시스템에 MDD를 전면 적용하기로 사업부에서 의사결정을 할 때 ‘과연 시장에서 알아줄까?’가 큰 고민이었습니다. 왜냐하면 LG CNS가 MDD를 2000년대 초반부터 지금까지 수십여 고객사에 적용해 왔지만, 주변에서 다른 회사의 성공 사례를 찾아보기가 힘들었기 때문이지요.

하지만 다른 회사들도 MDD와 유사한 방식을 적극 도입한다면, 저희 회사의 기술이 시장을 선도하고 있다는 반증이 되는 것이니까요. 치열한 경쟁이 예상되면서도 반가운 소식이었습니다.

Q-2. 그렇다면 다른 회사들의 MDD도 LG CNS와 비슷한 건가요?

비슷할 수도 있고 다를 수도 있습니다. 잠깐 용어 정리를 먼저 해드릴게요. MDD(Model Driven Development)는 일반적인 기술 용어입니다. 모델을 중심으로 하는 모든 개발 방식을 의미하고, 2001년 7월 OMG(Object Management Group)에서 MDD의 표준 스펙인 MDA(Model Driven Architecture)가 발표된 이후로 전세계적으로 소프트웨어를 개발할 때 많이 사용되고 있습니다.

MDD, MDE(Model Driven Engineering), MDSE(Model Driven Software Engineering) 등 용어만 다를 뿐, 모두 MDA라는 스펙을 맞추어 개발하는 방식입니다. 다른 회사에서도 MDA에 기반한 개발 방식을 적용한다면 저희와 마찬가지로 MDD를 하고 있는 것이지요. 즉, 컨셉은 동일합니다.

그러나 MDD라고 해서 다 같은 MDD는 아닙니다. MDA라는 스펙이 굉장히 추상적이거든요. 31 page의 PDF 파일에 MDA의 출현 배경, CIM, PIM, PSM 등 모델의 개념과 여러 모델간 변환 기술에 대해 추상적으로 기술되어 있어서 도구 업체들이 이 스펙만 보고 도구를 개발하는데 애를 많이 먹었습니다. 실제로 MDA를 기반으로 만들어진 자동화 도구의 내부를 들여다보면 구현 방식은 많이 다를 것이라고 예상됩니다. 그리고 모델의 활용 수준의 차이도 크고요.

l OMG의 MDA 스펙 (출처: OMG)

Q-3. 다른 회사의 MDD와 LG CNS의 MDD는 어떤 차이가 있을까요?

쉽게 말해 Level이 다른 것 같습니다. 미국의 연구 조사 기관인 Forrester에서 MDD의 수준을 3단계로 정의하였는데요. 여러 프로젝트에서 재사용이 가능하고 DSL(Domain Specific Language)을 이용하여 플랫폼에 독립적인 컴포넌트 기반의 모델을 활용하는 수준이 Level3입니다.

LG CNS는 2000년대 초반부터 MDD Level2를 꾸준히 차세대급 금융•공공 프로젝트에 적용해왔는데요. 타사의 MDA•MDD 개발 방식이 바로 MDD Level2입니다.

LG CNS에서는 2000년대 후반 경기가 악화되면서 고객의 예산이 감소하고 가격 경쟁이 심화되어, 기존의 방식으로는 더 이상 차별화와 수익 창출이 어렵다고 판단하였습니다. 이에 따라 재사용이 가능한 비즈니스 모델을 만들어낼 수 있는 MDD Level3로의 도약을 위해 전략적으로 투자를 한 것입니다.

l Forrester의 MDD Level 구분 (출처: Forrester Research, Inc.)

풍부한 Level2 적용 경험도 Level3로의 업그레이드에 큰 도움이 되었습니다. Level2는 모델로부터 소스코드를 일부만 생성하고, 상세 로직은 코딩으로 완성하는 방식입니다. 코딩 수작업으로 구조가 변경되면 소스코드를 역공학하여 모델을 다시 업데이트해야 합니다.

이렇게 되면 모델과 소스코드의 이중 관리라는 문제가 발생하게 되는데요. 모델은 모델대로 작성하고, 코딩은 코딩대로 해야 합니다. 모델 설계에 필요한 비즈니스도 배워야 하고 프로그래밍 언어나 개발 프레임워크와 같은 기술도 배워야 하죠. 또한 모델의 품질 점검도 해야 하고, 소스코드의 품질 점검도 해야 합니다. 이 둘을 일치화시키기 위해 역공학이라는 작업 또한 추가되는 Task입니다.

하지만 수십, 수백명의 개발자들에게 이중 관리가 쉬운 일이었을까요? 프로그램이 실행되는 실체는 소스코드이기 때문에 시간이 지날수록 소스코드만 업데이트하고 모델과의 Gap이 점점 벌어지게 됩니다. 유지보수 단계에 들어가도, 모델 업데이트 작업이 상당한 부담으로 작용하게 됩니다.

MDD Level3는 모델을 통해 비즈니스만 잘 설계하면 기술적인 소스코드가 100% 자동 생성되는 방식이기 때문에 비즈니스 설계에만 집중할 수 있고, 모델-소스코드 이중 관리의 문제점이 전혀 없습니다. Level3는 직접 경험해보기 전까지는 얼마나 획기적인지 잘 와 닿지가 않죠. 그래서 많은 오해를 사기도 하는 것 같아요. 소프트웨어를 개발할 때 코딩을 하지 않는다는 것은 상상하기 어려우니까요.

MDD Level3는 해외 사례를 살펴보아도 적용을 위해 체계적인 준비가 필요하고, 실제로 저희 회사에서도 Level3를 추진하면서 조직을 개편하고, 전 직원을 교육했을 정도니까요. MDD Level3는 단순한 개발 방식의 변화가 아니라 사상의 변화입니다. 그래서 MDD Level2에서 Level3로의 변화는 ‘Paradigm Shift’라고도 불리는데요. 국내에서 MDD Level3를 개발하고 적용사례를 확보한 회사는 LG CNS가 유일합니다.

Q-4. 재사용이 가능한 비즈니스 모델이 왜 Level3에서만 가능한지에 대해서 좀 더 자세히 설명해주실 수 있으신가요?

예를 들어 은행 시스템의 비즈니스를 UML(Unified Modeling Language) 모델로 설계했다고 가정해 볼게요. 모델은 건축 설계도와 비슷한 모형입니다. 이 모델로부터 건축물의 뼈대가 되는 일부의 소스코드를 생성한 후 이후의 상세 로직은 코딩을 통해 완성하는 방식이 MDD Level2라고 앞에서 설명드렸지요.

Level2에서의 모델을 다른 프로젝트에서 활용하려면 기본 뼈대인 모델과 살에 해당하는 소스코드 둘 다 이식이 필요할텐데요. 개발 환경에 독립적인 모델은 어느 정도 재사용이 가능할 수 있지만, 기반 기술과 밀접한 소스코드는 재사용이 어렵습니다. IT 기술이 급변하는 현시대에서는 동일한 개발 환경에 모델을 이식한다는 보장이 거의 없는데요. 코드의 개발 표준이나 프레임워크가 바뀐다면 재사용이 아니라 재작성을 해야 합니다. 그것도 사람의 수작업을 통해서 해야 하죠.

LG CNS의 Level3 방식에서는 모델로부터 완전한 소스코드가 생성되기 때문에 이식도 모델만 하면 됩니다. 플랫폼에 독립적인 모델은 그대로 유지하고, 기반 기술이 바뀌는 부분은 소스코드와 관계가 있기 때문에 자동화 도구에서 코드가 생성되는 규칙을 수정한 후 일괄적으로 새로운 형식의 소스코드를 생성해내면 됩니다. 따라서 Level3를 해야 비즈니스 모델의 온전한 재사용이 가능합니다.

Q-5. 비즈니스 모델 재사용에 대해 들어보면 효율성이 높아 보이는데요 실제로 시장에서 많이 활용되는 방식인가요?

MDD Level3를 처음 적용했던 2011년도만 해도 백지 상태에서 완전히 새로 개발하는 것을 선호하는 국내 금융 시장에서 비즈니스 모델의 재사용에 대해 효용성이 떨어질 것이라는 우려가 있었는데요.

금융 기관들의 M&A가 활발해지고, 인터넷 전문은행 등 신규 금융사가 생겨나기도 하고 또 최소의 비용으로 시스템을 재구축하고자 하는 요구가 늘어나고 있는 등 시장의 흐름이 바뀌고 있어서, 비즈니스 모델 기반으로 짧은 시간 내에 적은 비용으로 시스템을 구축하는 사례가 늘어나는 추세입니다.

l LG CNS MDD Process

기존 시스템을 재구축하는 고객사의 경우 타사의 비즈니스 모델을 그대로 적용하는 것은 무리가 있을 수 있습니다. 기능 추가나 수정이 필요할 것이고, 일정 분량 이상의 수정이 필요하다면 모델 재사용보다 신규 개발이 빠를 수도 있습니다.

저희는 기존 시스템을 재사용할 수 있도록 역공학을 활용해서 MDD Level3 모델을 생성하는 기술도 보유하고 있는데요. 역공학 모델의 활용 수준은 소스코드의 품질에 따라 천차만별입니다. “콩 심은 데서 콩 나온다”고 규칙이 잘 지켜지지 않고, 품질이 들쑥 날쑥한 복잡한 소스코드에서는 똑같이 복잡한 모델이 나오거든요. 소스코드로부터 다양한 산출물을 추출하고, 개선사항을 찾아내는 수준으로 역공학을 활용할지, 모델 리팩토링을 통해 재사용까지 진행할지는 기존 시스템의 품질을 보고 판단하고 있습니다.

Q-6. 이미 MDD Level3를 적용한 고객사들은 비즈니스 모델을 확보했다고 볼 수 있나요?

맞습니다. LG CNS와 함께 MDD Level3를 적용한 고객사들은 비즈니스 모델을 활용하여 자회사의 시스템을 재구축한다든가 타사에 모델을 판매할 수도 있고, 해외 진출시에도 소스 기반보다 유리합니다. 실제로 이렇게 활용하고 있는 사례도 있고요. 향후 운영하고 있는 시스템에 신기술을 적용하거나 개발 환경을 업그레이드 할 때에도 Level3 모델이 효율적입니다.

이런 부분은 저희가 SI 프로젝트를 하면서 고객사에게 제공할 수 있는 부가 가치라 볼 수 있는데요. 돈으로 환산이 어려운 것이 조금 아쉽네요. 앞으로 MDD Level3 방식이 확산되면 ‘비즈니스 모델 시장’이 형성될 것이라고 예측하고 있습니다.

Q-7. 하지만 일각에서는 Level3 방식의 모델이 자동화 도구에 Lock-in 된다는 우려가 제기되고 있습니다. 모델을 통해 소스코드를 100% 자동 생성하게 되면 나중에 기능을 추가할 때 소프트웨어 설계 모델 전체를 수정해야 한다는 이야기가 있던데요.

음. 이런 이야기는 저희 방식을 잘 모르기 때문에 나온 것 같은데요. 두 가지 질문이 섞여 있어서 순서대로 답변 드릴게요. 모델이 자동화 도구에 Lock-in되는 현상은 MDD Level2도 마찬가지입니다. 모델링 도구를 사용한다는 것 자체가 모델이 도구에 Lock-in되는 것이죠. 다른 도구에서는 그 모델을 열 수 없으니까요. 모델로부터 소스코드를 일부만 생성하든 전체를 다 생성하든 소스생성방식 또한 자동화 도구에 Lock-in되는 것입니다.

우리가 화면개발을 할 때에도 도구를 많이 사용하는데요. 소프트웨어 종속성(Lock-in)을 피하려면 도구를 쓰지 말고 HTML, JSP로 날코딩이라는걸 해야 하죠. 이런 경우 툴을 이용해서 그리는 것보다 시간이 오래 걸리고 품질이 떨어집니다. 오픈 소스 도구를 사용한다 하더라도 버그가 많고, 기능을 추가하려면 직접 도구의 내부를 뜯어서 수정할 수 있는 역량이 갖춰져야 합니다. 다들 편리한 기능을 갖추고 있고 A/S 되는 세탁기를 사용하고 있는데 나 홀로 Lock-in이 두렵다고 손빨래를 고집한다면 비효율적이겠죠.

그리고 MDD Level3가 기능을 추가할 때 소프트웨어 설계 모델 전체를 수정해야 한다는 것은 MDA 사상을 잘못 이해한 데서 나온 이야기 같습니다. 저희는 플랫폼 독립적인 PIM 모델만 집중적으로 작성하는데요. 모델 내에서의 비즈니스 기능 추가가 얼마든지 자유롭게 가능합니다.

모델은 한번 작성하면 끝나는 것이 아니라 유지보수 과정에서도 지속적으로 수정이 일어납니다. 프로그래밍 기술과 비즈니스가 혼재되어 있는 소스코드보다 오히려 비즈니스에 집중된 모델이 수정하기 더 편리하지요. MDD Level3가 유연하지 않다면 Level3를 적용한 후 3년째 독자적으로 유지보수를 하고 있는 고객사의 불만이 쇄도했을 것이고, 또 이 회사의 계열사들이 MDD를 적용한다고 했을 때 결사 반대했겠지요.

Q-8. 모델이 소스코드보다 왜 수정하기 쉬운지 좀 더 자세히 설명해주실 수 있나요?

전에 제가 기고했던 글에서 보여드렸던 그림인데요. 같이 한번 보시죠. 동일한 로직을 왼쪽은 Java 언어로, 오른쪽은 UML 모델과 DSL로 작성한 것입니다. 어느 쪽이 이해하기 쉬우신가요?

l 소스코드 vs UML모델

역시 오른쪽이라고 대답하시는군요. Java와 같은 프로그래밍 언어는 문법을 모르면 해석할 수가 없으니까요. 영어로 작성되어 있으니 한글 주석이 없으면 의미 파악도 어렵고요. 반면에 그림과 표현식이 간단한 DSL로 작성된 한글 모델은 흐름이 한눈에 보이지요. 물론 UML 모델이나 DSL도 표현식을 익혀야 되긴 하지만, 프로그래밍 언어를 새로 배우는 것보다 훨씬 짧은 시간 내에 가능합니다.

그 이유가 추상화 수준이 높기 때문인데요. MDA가 UML을 소스코드로 변환하는 것은 보다 고차원적인 추상화된 언어를 사용하고자 하는 소프트웨어 개발자들의 욕망을 반영한 것이기도 합니다. 과거에 기계어나 어셈블러로 프로그래밍하다가 고급 언어인 C++, Java, C#을 사용하려는 시도와 비슷한 거죠. 이렇게 추상화 수준이 높은 모델은 신규 작성, 분석, 수정, 의사소통 등에 있어서 전반적으로 유리합니다.

더 중요한 포인트는 모델은 고객의 요구사항인 ‘비즈니스’에만 집중해서 작성할 수 있습니다. 기술적인 내용은 자동화 도구가 소스코드를 생성하면서 알아서 채워주니까요. 반면에 수작업 코딩을 하려면 구현 기술도 알아야 합니다. 예를 들어, 왼쪽의 소스코드에서 public, class, new와 같은 명령어는 비즈니스 로직과 아무런 관련이 없는 프로그래밍의 기술적인 부분입니다.

여기에서 비즈니스는 현재일자로 적용이율을 조회하고, 계산식을 위해 원리금을 계산한다는 내용인데요. Java 언어나 프레임워크에서 제공하는 데이터 유형과 함수를 사용해서 기술적인 부분까지 코딩을 해줘야 프로그램이 동작합니다. 그러나 고객사의 업무 시스템을 구축할 때 가장 중요한 것은 비즈니스에 대한 이해도입니다. 프로그래밍 기술만 가지고서는 고객과의 의사소통도, 고객의 요구를 제대로 코드에 담아내는 것도 불가능하기 때문인데요.

금융사의 경우 기존 시스템이 대부분 COBOL이나 C이기 때문에 시장에서 금융 업무와 Java를 둘 다 잘 하는 개발 인력을 구하기가 어렵죠. 기존 유지보수 인력의 기술 전환도 고려해야 하고요. 비즈니스는 프로젝트 하나 한다고 해서 배워지는 것이 아닙니다. 상당히 오랜 시간 동안 동일 업무를 반복해야 쌓아지는 경험이라서요. 이런 환경에서 비즈니스 중심의 모델을 활용하면 많은 장점을 누릴 수 있습니다.

마지막으로 개발자들이 창의적으로, 자율적으로 코드를 작성하도록 허용하는 것은 매우 위험합니다. 공동 작업을 해야 하는 대규모 프로젝트에서 각자 자신만의 스타일로 코드를 작성한다면 다른 사람이 해석하기도, 수정하기도 어렵겠죠. 코딩 수준에 따라 품질 편차가 발생할 것이고요.

비표준 용어, 비성능 함수, 보안에 위배되는 구문이 사용될 가능성이 높기 때문에 코드 개별로 인스펙션을 해줘야 하는데, 이렇게 되면 소스코드를 형상관리 서버에 올릴 때 시간도 오래 걸리고… 사후 약방문인 경우가 많지요. 프로젝트의 규모가 크면 클수록, 수작업 코딩에 대한 철저한 통제와 표준 관리가 필요한데요. 이런 이유로 100% 소스코드 자동화를 하는 것입니다.

Q-9. 마지막으로 MDD Level3를 금융에서만 적용하는 이유가 궁금합니다. 다른 산업에도 적용할 수 있을까요?

세번째 질문에 대한 답변에서 말씀드린 것처럼, MDD Level2는 공공 프로젝트에도 적용한 사례가 많이 있습니다. MDD Level3가 나온 시점 이후에는 대기업 참여 제한으로 LG CNS가 공공 프로젝트에 진출하지 못하여 레퍼런스 확보가 안되었던 것이고요. 전자정부 프레임워크용 MDD Level3 도구를 갖추고 있고, 내부적으로 공공 유지보수 사이트에서 시험 적용을 완료한 상태입니다. 금융•공공이 아닌 LG전자 등 계열사에도 Spring Framework에 적용한 사례가 있습니다.

l LG CNS MDD기술팀 장경희 차장

긴 시간 동안 친절한 답변 감사드립니다. 이상으로 인터뷰를 마치겠습니다.

글 | LG CNS 홍보팀

챗봇과 대화를 할 수 있어요