본문 바로가기
프로그래밍/Springboot-토이프로젝트

【게시판-번외02】설계

by 코이킹 2022. 7. 9.
반응형

안녕하세요 코이킹입니다.

지난 포스트에 이어서 이번 포스트에서는 설계에 대해서 이야기해보겠습니다. 

 

※ 번외 포스트는 그저 사견이 가득 들어있을 뿐이고 구현에는 크게 영향을 끼치지 않으므로 무시하셔도 좋습니다. 


1. 목표

 - 꼭 필요한 설계문서에 대해서 알기 

 

2. 내가 생각하는 꼭 필요한 설계문서 

어디까지나 제 생각인 것을 먼저 밝혀 둡니다. 

 

저는 별도로 IT를 전공하지 않았고, 지금 다니고 있는 회사에서 같은 성질의 업무를 4년 정도 한 것이 전부입니다.

그저 제가 경험한 업무 범위내에서 없으면 곤란했고 있으면 수월하게 업무를 진행할 수 있었던 문서를 꼭 필요한 설계문서라고 칭하고 있습니다. 

 

일단 제가 경험한 업무의 종류는 크게 2가지로 나눌 수 있습니다. 

첫 번째로는 프로젝트성 업무가 있습니다. 이 업무는 신규 시스템을 구현하거나, 기존의 시스템에 기능을 추가하는 등의 업무입니다. 

두 번째로는 운영 업무가 있습니다. 이 업무는 운영 중인 시스템의 장애를 대응하는 등의 업무입니다.

 

두 가지 성질의 업무 모두 해결하는 데 있어서 가장 중요했던 것은 시스템을 배포하여 운영되고 있는 인프라의 전체상을 파악하는 것이었습니다.

인프라의 전체상을 파악하는게 중요한 이유는 실제 운영 중인 시스템의 인프라는 개발 시처럼 단순화되어있지 않고 복잡하고 다양한 컴포넌트로 구성되어 있습니다.

예를 들어 스테이징 환경부터는 애플리케이션 서버의 앞단에 리버스 프락시 서버가 위치한 구성의 시스템이 있다고 가정합니다. 

개발 버서에서 애플리케이션의 동작확인 테스트까지 마친 상태에서, 스테이징 서버에 배포한 후 동작확인을 실시하는데 404 에러가 발생합니다. 

리버스 프록시 서버가 있다는 사실만 알면 금방 문제를 해결할 힌트를 얻을 수 있겠지만, 인프라 구성을 파악하지 못했다면, 간단한 문제가 어려운 문제로 변하게 됩니다. 

 

 

그다음 중요했던 것은 시스템의 전체상에서 결과를 파악하는 것입니다.

제가 생각하는 시스템의 결과란 입/출력입니다. 결과가 일단 제대로 정의되어있다면 업무를 진행하는 데는 문제가 없다고 봅니다. 

따라서 입/출력이 일어나는 부분의 리스트 업과 입/출력이 패턴이 기록된 문서가 필요합니다. 

 

사실 우리 회사의 개발업무는 협력회사에 발주해서 납품받는 형식이 주가 되므로, 소스코드단의 상세설계까지 파악하기란 쉽지 않아, 소스코드단까지 파악하고 있는 엔지니어는 손에 꼽을 정도입니다. 

입/출력의 설계가 제대로 되어있지 않다면, 소스코드의 수정까지 직접 해야 하므로 최소한 입/출력에 대한 문서는 갖추고 있어야 한다고 생각합니다. 

 

 

그다음 중요했던 것은 시스템의 데이터베이스의 테이블에 대한 정보와 테이블 간의 관계에 대해 파악하는 것입니다.

데이터가 휘발되는 프로그램이 아닌 이상, 데이터는 데이터베이스에 저장되게 됩니다. 

데이터베이스에 저장되는 데이터는 시스템의 출력 결과와 같은 중요한 것이 대부분이며, 하나의 테이블에 모든 데이터가 결합되어 들어있지 않은 경우가 대부분이므로 테이블의 관계에 대해서 파악하고 있어야 합니다. 

 

 위에 소개한 업무를 해결하기 위해 중요했던 것을 기준으로 생각해 보았을 때 아래의 설계문서가 필요하다고 생각했습니다. 

  • 인프라 구성도 (5)
  • 사이트 맵 (1)
  • 화면 설계서 / API 설계서 (3)
  • DB 테이블 정의서  (4) 
  • DB 테이블 ER 다이어그램 (2) 

이 포스트 시리즈에서는 (3) , (4)의 경우 개발 시에 작성할 예정이며, (5)의 경우 배포 시에 같이 작성할 예정입니다.

 

 

3. 사이트 맵 

 

 

4. ER 다이어그램

 


설계는 이것으로 마치겠습니다.

다음 포스트는 CRUD기능의 게시판 구현을 본격적으로 해보게 될 것 같습니다 

 

 

반응형

댓글