풀스택(Full stack) 웹 개발 후기 #2 : 프로그램 설계 개발 삽질이야기

지난 포스팅 에 이은 두번째 글 !!!
이 글은 혼자서 웹서비스를 만들어본 내 경험의 후기를 적은 것이다.

<목차>

3. 프로그램 설계와 일정 산출
4. 프론트엔드 서비스 개발
5. 백엔드 서비스 개발
6. 서비스 테스트와 유지보수
7. 느낀점

이번 포스팅에서는 3번 만을 다룬다.

※ 혹시라도 제가 미숙하여 잘 모르고 적은 글이 있다면 지적 부탁드립니다.

======================================================

3. 프로그램의 설계와 일정 산출

어떤 것을 만들지 구상이 어느정도 되었고, 또 무엇을 사용하여 개발할지도 결정이 되었다면,
이제부터는 어디서부터 어디까지 얼마동안 개발을 진행할 것인지를 정해야 한다.

즉, 세부 계획을 짜는 단계인데, 이것은 정말 무궁무진하게 다양한 변수가 있어서 한마디로 정의할 수가 없는 부분이다.
그럼 어떤 변수들이 있는지 살펴보자, 그리고 이것들은 일정산출을 하는 데 중요한 고려사항이 된다.

1. 한정된 시간

> 프로젝트마다 릴리즈(=출시, 완성) 예정일이 있다. 뚜렷한 목표 만큼이나 중요한것이 종료 날짜를 정하는 것이다. 종료일이 정해지지 않은 프로젝트는 긴장감이 부족하여 루즈해질 가능성이 높다. 무조건 종료 목표일은 있어야 한다.

> 나같은 경우에는 서비스가 5월부터 무. 조. 건. 출시되어야 했다. 즉, 일정을 늘릴 수 없었다.
그래서 핵심적인 기능부터 우선순위를 고려하여, 그 기간안에 완성할 수 있을 만큼의 프로젝트 개발 범주를 정하여 기획안을 만들었다.

2. 한정된 예산

> 개발 프로젝트를 맡기고자 하는 분이나, 직접 진행하는 개발자라면 금전적인 부분에 대한 고려를 빼놓을 수 없다. 기본적으로 사무실 임대료, 인건비가 나갈것이고, 실제 서비스 개발 시, 필요한 기술 인프라 구축(서버, 개발용 PC, 모바일 단말기 등) 비용이 있을것이다.
   특히 인건비가 개발자를 고용하고자 하는 개인사업자 분들에게는 고역스런 부분이다. 개발자마다 실력이 다 다르고 (어중간한 면접만으로는 섣불리 평가할 수도 없다), 경력에 따라 가격?(몸값 같은...)이 다르므로 이것은, 얼마나 공을들여 사람을 구하는지가 관건이다. 업무성향과 가치관이 비슷한 사람, 프로젝트를 진행할 만한 충분한 지식이 있거나 혹은 습득 능력이 있는사람, 열정있고 성실한 사람 정도면 되지 않을까? 싶다.

나는 프리랜서였기 때문에 직접적으로 걱정할 필요가 없는 부분이었다. 정식 계약서를 작성했었고, 프로젝트 대금을 선금, 중도금, 잔금으로 나누어 받았다. 인프라 구축 비용은 당연히 개발 요청자가 부담하였다.

3. 자신의 개발 실력 & 잠재된 문제거리

> 개발일정을 산출할 때, 가장 중요한 것이 아닐까 생각하는 부분이다. 프로젝트를 진행하다 보면 생각지 못한 부분에서 변경이 생길 확률이 매우 높다. 기능이 바뀔수도 있고, 예기치 못했던 오류가 발생할 수도 있으며, 심한경우 설계까지도 바뀔 수 있다.
  이것이 바로 잠재된 문제들 인데, 자신이 얼마만큼 그러한 잠재적 이슈에 대해 미리 예측 가능하고, 또 그것에 대한 해결방안들을 알고있는지가 중요하다. (사실 이부분은 정말 경험으로 커버 할 수 밖에없는 것이기 때문에, 아예 초보들은 주변의 고수로부터 의견을 되도록 많이 구하고, 개인적으로도 자료를 많이 찾아보는것을 추천한다.)

> 나도 이부분이 가장 난감했던것 같다. 처음으로 하는 프리랜싱을 프로젝트였기 때문에, 아직 한번도 해보지 못한 통째 서비스 개발에 대한 내 실력도 잘 가늠할 수 없었다. 다만, 웹서비스를 개발 + 런칭하기 위해 필요한 작업들과 프로세스에 대해 어느정도 이해하고 있는 수준이었다. 그리하여 내 주변에 개인 사업을 하는 분들, 특히 프리랜서 개발자분들로부터 많은 조언을 얻었던것 같다.

======================================================
그렇게 완성된 그때 당시,
나의 최종 일정 설계

프로젝트 시작 : 3월 1일
프로젝트 완료 및 서비스 런칭 : 5월 1일

1. 기획 + 프로그램 설계 : 2.22 ~ 2.29 (8일)
 - 이때 사실 프로그램 디자인 설계도 같이 했어야 한다.
   그런데 디자이너가 없었고 나는 프론트엔드의 디자인 적용에 대한 개발 의무가 없음을 계약사항에 추가하였다.

2. 프로젝트 계약 : 2.29
 - 이때 기획서와 계약서를 같이 묶어서 도장을 찍었음.

3. 프로그램 설계 : 3.1 ~ 3.4 (4일)
 - 데이터 모델링 및 DB 설계
 - Base Code 정리 (프레임웤의 개발 환경설정과 비슷하다고 보면 됨. )
   ※ 여기서 BaseCode (Framework)에 대한 이해는 어느정도 이미 되어있어야만 함.
      그러므로 서비스에 사용될 기술스택이 정해졌을때 곧바로 샘플 앱을 만드는 등의 개인적인 스터디를 시작하는 것을 추천함.
 - 사용자 인증방식 결정 (로그인 API 연동 혹은
 - 연동 모듈
 - API 및 URL 체계 확정
 - 테스트 서버 환경 구성

4. 서비스 개발 : 3.5 ~ 4.3 (약 1달)
 - 관리자 어플리케이션 Back-end, Front-end
 - 고객 어플리케이션 Back-end, Front-end
 - 나같은 경우는 관리자와 고객용 어플리케이션 개발을 동시에 진행 함. (로직이 비슷하여 동시 개발하기가 수월했기 때문.)

5. 서비스 테스트 및 출시 준비 : 4.4 ~ 4.30 (약 1달)
 - 실서비스용 서버 구축 및 서비스 세팅
 - DB 백업 루틴 제작
 - 도메인 및 SSL 인증서 구입 & 연결
 - 모듈 및 UI 테스트 + 디버깅
 - (서비스 차원의) 고객용 서비스 프론트 디자인 적용

6. 서비스 출시 및 유지 보수 : 5.1 ~

======================================================

이렇게 두달간에 걸친 프로젝트 진행 기간을 설정하였다.
실제로 작업을 진행할때 계획한 기간이 일치할 수는 당연히 없다.
왜 ?? 중간에 변수는 얼마든지 있을 수 있기 때문에,,, -ㅅ-

다만, 이 일정을 보면 확인할 수 있는 뚜렷한 사실이 있다.
 - 개발 시작전에 기획과 설계에 대한 작업이 명확히 이루어져야 함.
 - 개발 기간 만큼이나 비슷한 출시 준비기간이 필요하다는 것.

이렇게 계획을 세워두면 자신이 지금 무엇을 해야하는지, 진도가 빠른지 혹은 느린지 등을 수월하게 파악할 수 있어, 
완료시점까지의 일정조율이나 업무관리를 효과적으로 할 수 있다.

======================================================

일단은 이번 포스팅은 여기서 마친다.
구체적인 프로젝트 개발에 대한 이야기는 다음에 !!!


핑백



통계 위젯 (블랙)

1107
917
192723

GoogleAdsenseResponsive

Cluster map