풀스택(Full stack) 웹 개발 후기 #1 : 프로젝트의 시작 개발 삽질이야기


오늘은 코드와 개발 지식만 주구장창 늘어놓던 내가 첨으로 글이라는것을 써보려 한다.
3, 4월동안 포스팅을 많이 올리지 못한 것은, 난생 처음으로 프리랜서로서 개인 프로젝트를 맡게되어서 였다.

Full stack 개발... 개발직에 종사하는 분들이라면 한번 쯤 다 들어보셧을 단어이다.
일단 기본 개념은 서비스 개발을 위한 모든 업무를 1 인이 수행한다는 것이다.

풀스택 개발이라는 것을 자세히 알고 싶다면 여기를 참조하시면 될듯...

어쨋든,,, !!

백엔드부터 프론트 엔드까지의 개발을 혼자 진행하면서 어떤 진행과정과 삽질을 했는지 기록하고자 한다.
아래와 같은 순서로!!!

<목차>

1. 프로젝트의 시작과 아이디어 구체화
2. 프로젝트 기술스택 선정
3. 프로그램 설계와 일정 산출
4. 프론트엔드 서비스 개발
5. 백엔드 서비스 개발
6. 서비스 테스트와 유지보수
7. 느낀점

이번 포스팅에서는 1,2 만을 다룬다.

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

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

1. 프로젝트의 시작과 아이디어의 구체화

먼저, 프로젝트 진행순서이다.

내가 생각하는 올바른 개발 프로젝트 진행순서 :
발상(아이디어) > 구체화(기획, 디자인) > 개발 (프로그래밍) > 테스트 및 디버그 (+최적화) > 서비스 적용

대부분의 사람들이 발상까지는 잘 하지만 구체화를 잘 하지 못한다. 

구체화를 하지 않고 바로 개발로 뛰어드는 사람도 있다. 이것은 매우 위험하다.
마치 지도가 없는데, 나침반이 없는데 저멀리 한줄기 빛만을 바라보며 배를 몰고 망망대해로 나가는것과 같다.
시간이 아무리 부족하더라도 최소한의 구체화작업을 진행하는 것을 추천한다.

그럼 구체화는 어떻게 해야할까?
구체화를 위한 가장 좋은 방법을 나는 아래의 2가지 라고 생각한다

- 핵심 기능 리스트 업
- 생각하는 어플리케이션의 뼈대 화면 (스토리보드 or 와이어프레임) 제작

이정도 작업을 간단하게라도 거치고 나면 다음 작업의 진행이 훨씬 순조로워 질 것이다.
이것은 개발 프로젝트의 과녁이자, 설계도가 되며, 개발자 입장에서는 모든 작업을 계획하고 진행하기 위한 핵심 정보가 된다.

사실 제대로 된 개발 프로젝트 방법론을 말하자면, 
폭포수모델 , 구조적 분석/설계, 객체지향 방법론, 애자일 등 여러가지가 있으므로 궁금한분은 직접 찾아보시길...
1인이 진행하는 프로젝트에서는 이러한 체계적인 방법론을 굳이 따를 필요가 없다.

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

2 프로젝트 기술 스택 선정

프로그램 개발을 위해서 어떤 기술들을 사용할지 결정하는 과정이다.
순서에 따라 내 생각을 적어보았다.

1. 개발 언어 선택

> Legacy 프로그램 이거나, 특정 기술스택이 미리 정해져있는 프로젝트가 아니라면, 익숙한 언어를 선택하는 것이 좋다.
나는 아무 언어나 자신있다 혹은 프로젝트의 일정이 여유가 있어서 학습하며 진행이 가능하다면, 이 부분은 건너뛰어도 상관 없다.

일단 나같은 경우에는, 일정이 매우 빡빡했고, 주요 언어는 Java, Python, Javacript (Nodejs) 이었는데,
이 중에서 최근에 가장 많이 사용해 보았고 관심있던 Node.js 를 선택했다. 


2. Database 선택 (필요 시)

> RDB 를 사용해야하는지, NoSQL을 사용해야 하는지, 그리고 그 둘중 하나를 선택했다면, 어떤 DBMS 를 쓸 것인지 선택해야한다.

나는 세무용 웹어플리케이션 이었는데 데이터간의 상관관계가 뚜렷한 서비스였기에 RDB - MySQL을 사용하기로 결정하였다.


3. 프레임워크 선택 + 베이스 코드 물색

> 자, 이부분이 사실 프로젝트 개발에 있어 가장 중요한 부분일 것이다.
왜냐하면 이것의 결정으로 인해 프로젝트 개발 및 사후 관리 시, 매우 고생을 할 수도 또 꿀을 빨수도 있기 때문이다.

프로그래밍 언어만 선정하면 끝나는것이 아니냐고 생각하는 분들이 혹시나!! 있을지는 모르겠으나,,
개발언어 선정 만큼이나 중요한것이, 해당 언어로 제공되는 오픈소스 라이브러리들을 고르는 것 이라고 생각한다.

세상에 출시되어 활용되고 있는 소프트웨어들은 대부분 프레임워크나 오픈소스 라이브러리를 사용하여 개발되었다.
한마디로 말하면, 순수 100% 코드를 개발자가 모두 구현하지 않는다는 것이다.
그러므로 내가 원하는 서비스 구현을 도와줄 수 있는 이미 만들어진 적절한 코드 패키지들을 잘 찾아서 조립해 나가는 현명함이 필요하다.

이미 서비스 개발을 위해 사용가능한 잘 알고있는 자신있는 프레임워크가 있다면 굳이 고민할 필요가 없겠지만,
그렇지 않을경우 찾아서 골라야 한다.

자, 그럼 어떻게 찾아야 하나? 아래의 방법들로 물색이 가능하다.

1. GitHub을 뒤진다.

2. 해당 서비스 개발을 위한 잘 알려진 프레임워크를 사용한다.
   ex) Python - Django, Nodejs - Express, Java - Spring 등

3. 이미 만들어진 유사한 서비스들의 기술스택을 살펴본다

나는 Nodejs - Express 를 이미 사용해 본 경험이 있었기에, 이를 Base로 한 웹서비스 프로젝트를 찾아보기로 했다.
내가 진행하려 했던 프로젝트는 소규모 이용자들을 위한 반응형 웹서비스 (예상 사용자 약 1000 명, 동시 접속자 수 100명 미만) 였기 때문에, 굳이 다양한 기능을 제공하거나, 세팅이 복잡한 프레임웍을 사용할 필요가 없었다.

여러가지 GitHub 의 Repository 를 둘러본 끝에 Base Code를 찾았내었다.

그 결과 사용하게 된
최종 기술 Stack 

Back End :
웹서버 (Nodejs Express), 데이터베이스 (MySQL), ORM (Sequelize) 

Front End : 
웹서버 (Nodejs Express), Html 템플릿 엔진 (Jade), 다이나믹 웹 (JQuery), 디자인 라이브러리 (Bootstrap SASS, Awsome Font)


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

To be continued ...

핑백

덧글

  • 검은월광 2016/06/06 16:31 #

    Jade를 보니 bootstrap으로 만들어진 무료 테마와 어떻게 뜯어고쳐 연동시킬지 모르겠더군요. 그 부분이 참 궁금합니다.
※ 로그인 사용자만 덧글을 남길 수 있습니다.


통계 위젯 (블랙)

69107
917
192721

GoogleAdsenseResponsive

Cluster map