System Design - (0) : 서비스 개발단계

­이승환·2022년 1월 9일
0

System Design

목록 보기
2/7

Overview


프로젝트 들어가기 앞서, 실무에서 사용하는 프로젝트 개발단계에 대해서 개발자 입장에서? 가볍게 정리하고자 한다. 개발이라는게 정답이 있는 것이 아니므로, 이것이 무조건적인 솔루션이다라고 정의내릴 수 없다는 점을 기억해주길 바람

순서

(1) 문제정의 ( 요구사항 분석 )
(2) 문제별 해결 시퀀스 정의
(3) 시퀀스 다이어그램 작성 & phase-0 작성
(4) 개발 환경 구성하기
(5) 코딩컨벤션 제작
(6) 집중코딩시간
(7) 코드리뷰 & 점검
(8) 집중코딩시간
(9) 코드리뷰 & 리팩토링
(10) QA
(11) 배포단계 & 오픈
(12) 개선

문제정의

  • 서비스의 목적을 설정

    한문장으로 정의 내릴 수 있는 해결 목표

  • 해결하고자 하는 명확한 목표를 정의

    개발의 대상이 됨

시퀀스 정의

  • 실제 실행 방법을 나열
  • 도출한 실행 방법이 1단계(문제정의)에서 정의한 문제 해결에 부합되는지 확인
  • 문제해결 시퀀스
    1. 데이터를 수집한다.
    2. 데이터를 정리한다.
    3. 메일 발송 포멧을 선택한다.
      3-1 메일 발송 포멧은 몇개가 필요하지?
      3-2 메일에 들어갈 내용은 어떻게 될까요?
      3-3 메일에 이미지는 들어가나요?
      3-4 HTML 타입으로 지정되나요
    4. 메일을 발송한다.
      4-1 메일 발송은 언제 하지?
      4-2 메일은 수동 | 자동 ?

시퀀스 다이어그램

  • 문제해결 단계를 시퀀스 다이어그램으로 도식화
  • 시퀀스별로 필요한 데이터, 발생하는 데이터를 분리 정리
  • 전체 개발에 기준이 되는 스캘렐톤 시퀀스를 선택
  • 선택된 시퀀스를 phase-0 선정
  • 해당 시퀀스를 기준으로 BM(비지니스모델링)의 구조를 잡는다
    • 화이트보드를 이용해서 다이어그램을 작성
    • 순서도 , 그래프 제작 툴을 이용하여 정리된 문서를 그림으로 정리
    • 각 시퀀스별에 필요한 데이터를 추출하고 테이블로 구현
    • 로그 테이블에 저장정보, 타입등을 생각
    • 결론적으로 UML을 작성

개발 환경 세팅

  • 목적 프로그램과 가장 잘 맞는 언어를 선택, 언어별 framework 선택
  • 선택되지 않은 언어와 framework에 대해서도 이유를 작성
  • DB, NoSQL, CDN, storage , Server, apache, nginx, 등등 여러가지를 고려하면서 각 각의 특징에 대해서 학습을 지속

코딩 컨벤션 정의

  • 여러명이 작업을 하지만 1명이 작업한것처럼
  • 가독성을 올리고, 작업속도를 빠르게 하기 위함입니다.
  • 버그 탐지 및 개발에 대한 질을 높일 수 있습니다.

개발 시작

  • 화이팅!!

코드리뷰

  • 처음 개발이 진행된 후 빠르게 스켈렐톤 코드들을 점검
  • 코드의 구조를 잡음
  • ERD를 보면서 해당 개발 하고자 하는 서비스의 구조에 적합한 부분인지도 확인
  • 빠른 시간에 기본 구조를 잡아서 확장이 이루어 지는 부분에서 최대한 노이즈가 없도록 작업을 진행

리팩토링

  • 개발 환경과 QA 환경을 고려한 데이터 접근에 대한 부분을 config 로 세팅
  • QA 시 시퀀스에 더미로 제공해야 되는 지점들을 찾아서 더미 프로세스를 세팅

QA

  • TDD 로 개발을 진행하면서 빈을 확인했다면, 통합 테스트를 진행

배포

  • 확장성과 가용성을 고려!
profile
Mechanical & Computer Science

0개의 댓글