ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 내일회
    카테고리 없음 2023. 4. 23. 18:18

     

    취업에 성공하면 맛있는 돌돔회를 시켜 먹자!

     
    한동안 미뤄오고 있었던 새로운 프로젝트를 본격적으로 시작해보고자 한다. 회 등 수산물과 관련된 상품을 취급하는 이커머스 애플리케이션을 클론 코딩하는 프로젝트이다.
     
     
     

    새로운 프로젝트의 목적

    클론 코딩 프로젝트를 하나 더 진행하는 목적은 다음과 같다.
     
     

    1.  명확한 요구사항과 사용자 스토리를 바탕으로 설계와 구현을 진행하는 경험

    SMASH 프로젝트를 진행하면서 많이 고민했지만 대외적으로 드러내기 쉽지 않았던 고민이 있었다. 내가 선정했던 도메인에 대해 완전히 이해하지 못한 채로 구현을 진행하고 있는 것 같다는 느낌이었다. 운동 인원 모집이라는 도메인을 '평소에 실제로 자주' 사용해본 적이 없다보니, 사용자 스토리를 구상하는 과정에서부터 쉽지가 않았다. 어떻게든 구상했던 사용자 스토리와 기능을 구현하는 과정에서는 구현이 잘 진행되지 않았거나, 예상과는 다른 결과물이 도출되기도 했다.
     
    그렇지만 대외적으로 공표된 프로젝트 마감 일자가 있는 상황에서 어느 정도 구현을 진행한 애플리케이션의 도메인 자체를 갈아엎는 결정을 내리기란 쉽지 않았고, 당시에는 사용자 스토리를 다시 분석하고 작성하는 쪽으로 문제 해결을 시도했었다. 목표한 애플리케이션과 기능을 아예 보여주지 못하는 최악의 상황은 마주하지 않았지만, 구현 과정에서 계속해서 핵심적인 기획을 바꾸게 되면서 구현이 상당 부분 지체되었었던 경험이 있었다.
     
    그래서 이번에는 사용자가 애플리케이션을 사용하는 이유가 명확하고, 그로부터 요구사항을 명확하게 명세할 수 있는 이커머스를 도메인을 구축해보는 것을 목표로 삼았다. 요구사항이 명확하므로, 해당 프로젝트를 진행하면서는 설계 과정과 구현에 집중하고, 적용할 수 있는 패턴들을 적용해보거나, 필요한 기술을 학습하고 도입하는 과정을 경험하는 데 초점을 맞출 계획이다.
     
     

    2.  도메인 로직을 객체지향적으로 설계해보면서 객체지향을 다시 한 번 올바르게 이해

    앞서 고민했었던 '도메인에 대한 이해 부족'의 문제는 도메인 설계 상의 결함으로 이어졌다.
     
    - 사용자가 어떤 가치를 획득해야 하는지 쉽게 이해하기 어려워 사용자 스토리가 쉽게 작성되지 않는 와중에 목표한 기획 마감 시간이 다가왔다. 일단 어떻게든 구현 과정에서 참고할 수 있는 요구사항을 작성해야 했기 때문에 일단은 예시 애플리케이션의 화면을 집중적으로 분석했다. '사용자가 이런 동작을 했을 때, 화면에 이런 변화가 나타날 것이다' 형식의 사용자 스토리가 만들어졌다.
     
    - 해당 사용자 스토리를 만족시키는 기능을 구현하기 위해 도메인 구조를 설계했다. 문제는 도메인 로직이 사용자 스토리에 표현했던 화면에 의존적으로 형성되었다는 데 있었다. 당시 부족했던 각 레이어와 도메인 객체의 협력, 위임 구조 지식과 맞물려 구현을 진행하면 진행할수록 확장이나 수정이 불가능한 수준으로 힘들어졌다. 문제를 이해하고 '그나마' 요구사항의 변경이나 확장을 시도라도 해볼 수 있는 수준으로 고치는 데만 해도 며칠을 써야 했을뿐더러, 한 번 잘못 설계된 도메인 구조 하에서 기능을 추가하기가 정말 쉽지 않았다.
     
    트레이너님들이 지난 프로젝트 기간 동안 조언해주신 내용들과, '오브젝트'를 비롯한 여러 저서들을 통해 접할 수 있는 내용들을 바탕으로 도메인 객체들을 구성해보고, 책임과 협력을 어떻게 분배할 것인지 고민하면서 기능을 구현하고, 그 과정에서 느끼는 것들을 기록해보고자 한다.
     
     

    3.  DevOps를 작은 단위에서부터 구축하는 연습

    이력서 피드백을 받으면서 들은 조언으로 프로젝트 레포지토리에 README.md 파일을 작성하고, CI/CD 체계나 애플리케이션의 각 기능의 처리를 명세한 시퀀스 다이어그램을 추가할 수 있으면 좋겠다는 조언을 들었다.
     
    테스트 및 배포 자동화 체계 구축, API 문서 작성 등 애플리케이션을 유지하는 데 도움을 줄 수 있고 생산성을 향상시킬 수 있는 체계와 클라우드 환경에 대한 이해와 학습의 필요성은 느끼고 있었으나, 애플리케이션에 적용시켰을 때 부수 효과가 발생할지도 모른다는 막연한 두려움에 학습이나 적용을 차일피일 미뤄오고 있었다. 그래서 새로 구현할 프로젝트는 프로젝트를 세팅하는 단계에서부터 DevOps와 관련된 체계를 구축해보고자 한다. 해당 구축 경험을 바탕으로 기존에 진행했었던 애플리케이션에도 DevOps를 적용해보고자 한다.
     
     
     

    오늘의 목표는?

    참고할 웹 애플리케이션이 어떻게 동작하는지 쭉 살펴보고, 기능의 중요도를 나누어 사용자 스토리와 E2E 테스트 목록을 작성할 계획이다. 전체적인 플로우를 확인해야 하기 때문에 내일이나 모레 먹을 연어회도 가볍게 주문해볼 계획이다.
     
     
     

    댓글

Designed by Tistory.