ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 복잡한 프로젝트를 성공시키려면..?
    Domain Driven Design 2021. 2. 7. 03:43

    야심찬 목표를 가진 프로젝트와 지속적으로 발생하는 요구사항을 충족시키기 위해 끊임없이 발전하고 복잡해지는 소프트웨어를 성공적으로 개발하여 결과물을 만들어내기 위해 가장 중요한 것은 무엇일까요?

     

    현실세계에서의 여러 문제들, 사용자의 활동과 업무에 의해 발생하는 요구사항들, 이해관계 등등.. 소프트웨어는 복잡해지고, 발전하며 확장되게 됩니다. 개발 초기이든, 개발 후 유지보수 하면서든 말이죠.

     

    그렇기 때문에 성공적인 소프트웨어 개발을 위해서는 설계가 아주 중요합니다.

    초보 개발자는 설계의 단계에서 구현을 위한 기술적인 측면에 더 신경을 쏟게 될 수 있습니다. 하지만 기술적인 문제를 해결하는 방법은 책, 인터넷 등 많은 곳에서 해결법을 찾을 수 있습니다.

    그보다 더 중요한 것은 사용자의 활동과 업무에 해당하는 도메인 그 자체에 대한 이해에 있습니다.

     

    복잡한 프로젝트를 성공시키려면 도메인 모델링과 설계부터 파악하고 준비해야합니다.

    "어떻게 하면 개발자가 다른 이의 전문 분야에 대한 요구사항을 체계화하고 응집력 있게 설계하고 모델링할 수 있는지?" 에 대한 많은 소프트웨어 설계자들이 고민하며 "도메인 주도 설계" 라는 철학이 나타났고, 이에 대한 내용의 책이 있습니다.

     

     

    Domina Driven Design - Eric Evans

    이 책 모든 내용에 대한 전반적인 전제 조건이 있습니다.

     

    1. 대부분의 소프트웨어 프로젝트에서는 가장 먼저 도메인 로직에 집중해야 한다.

    2. 복잡한 도메인 설계는 모델을 기반으로 해야 한다.

     

    그리고 특정 방법론에 매여 있지는 않지만 '애자일 개발 방법론'을 지향하며, 프로젝트 수행 중 수행해야 할 두 가지의 실천법이 있습니다.

     

    1. 개발은 반복주기를 토대로 진행되야 한다.

    2. 개발자와 도메인 전문가는 밀접한 관계에 있어야 한다.

     

    위의 실천법과 애자일 개발 방법론에 대해 더 설명하자면,

     

    정적인 문서, 지나친 선행 계획과 설계로 인해 프로젝트에 부담을 주는 개발 방법론들을 지양합니다.

    설계에 관련된 의사결정의 중요성은 인정하되, 선행 설계는 반대하는 대신 의사소통과 프로젝트의 방향을 빠르게 변화시킬 수 있는 능력을 향상시키는데 굉장한 노력을 기울이는 것을 강조합니다.

     

    개발자는 빠르게 변하는 상황에 대처하는 능력을 갖추고 프로젝트의 어떤 단계에서도 '작동하는 가장 단순한 것'을 활용하고 지속적인 리팩토링을 통해 수많은 점진적인 설계 개선을 바탕으로 고객의 실제 요구사항에 부합하는 설계에 도달시키는 것을 목표로 하는 개발 방법입니다.

     

    도메인 주도 설계는 도메인에 대한 방대하고 복잡한 지식을 받아들이고 모델을 만들어 냅니다. 그리고 이 모델은 도메인에 대한 깊은 통찰력과 핵심 개념에 집중하여 반영하게 됩니다. 

    이는 도메인 전문가와 개발자 사이의 협업의 결과이며, 개발은 반복주기를 토대로 진행되므로 이 작업은 프로젝트 전체 생명주기 동안 지속적으로 이루어져야 합니다.

     

     

    전반적인 책의 내용이 심오하고, 용어에 대한 개념도 어느정도 있어야 이해가 가능한 부분이 있습니다.

    초보 개발자로서 공부해야 하는 단계로 따지자면 기술적인 측면을 더 습득하고 설계와 개발론에 대한 부분은 그 이후에 쌓아도 된다고 생각하는 편이지만, 도메인 주도 설계 라는 철학의 기본적인 설계와 모델링 방법을 숙지하면 기술적인 측면과는 다른 관점으로 도움이 될 것 같습니다.

    댓글

Designed by Tistory.