풀스택(Full stack) 웹 개발 후기 #3 : 서비스 개발

이 글은 혼자서 웹서비스를 만들어본 내 경험의 후기를 적은 것이다.
사실 글을 적기시작한지는 한참 전인데...
ㅋㅋㅋ 이제서야 포스팅을 완료 하게 됨;;;
이전 글들은 아래의 목차링크를 눌러 볼 수 있다.

<목차>

4. 프론트엔드 서비스 개발
5. 백엔드 서비스 개발
6. 서비스 테스트와 유지보수
7. 느낀점

이번 포스팅에서는 4, 5번을 다루고자 한다.

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

======================================================
들어가기 전에...

아마 대부분의 서비스가 마찬가지 이겠지만, 고객들이 사용하는 프로그램이 있다면, 
관리자가 사용하는 프로그램이 따로있다. 이것은 마치 하나의 세트처럼 움직이기 마련이다.

나도 마찬가지였다. 고객용 웹 서비스가 있었고, 이것으로 유입되거나 노출시켜야 하는 데이터를 관리하는 직원용 웹 서비스 있었다. 그래서 엄격히 말해 프론트엔드+백엔드를 통합한 2개 프로젝트를 한 셈이다.

프로젝트의 진행일정은 이전 포스팅에서 적은바와 같이 딱 2달이 걸렸다.

백엔드와 프론트엔드의 개발을 극명하게 구분하는 요소가 나는 "설계의 대상" 이라고 생각한다.
그리고 그것은 아래와 같다.

백엔드의 경우 : Database, API (URL)
프론트엔드의 경우 : UI (User Interface), UX (User eXperience)

그 이외에도 신경써야할 것들은 많지만, 가장 대표적인 것들은 이렇다.


4. 프론트엔드 서비스 개발

Front-End 는 사람에 비유했을때, 외모라고 볼 수 있다.
즉, 내가만든 서비스가 최초로 사용자와 직접 상호작용하는 부분을 말한다.

그래서, 웹 서비스의 경우 주소창에 URL 을 치고 들어가면 볼수 있는 모든 화면,
게임의 경우, 사용자들이 자신의 PC 혹은 모바일에서 구동시켜 사용하는 프로그램을 일컫는다

프론트엔드에 보여지는 모든것들(텍스트, 이미지, 동영상)은 대부분 API 서버(=백엔드) 라는 것으로부터 가져온다.
클라이언트에서 자체적으로 저장하고있는 로컬 리소스도 존재하긴 하겠으나,
이것에만 의존하는 프로그램은 사실상 요즘같은 세상에는 거의 없다고 생각하면 되겠다.

프론트엔드 개발에서는 기술적인 요소 만큼, 혹은 그보다 더 중요하게 여겨지는 것이 디자인 요소이다
그래서 이와 관련하여 중요하다고 생각하는 2 가지를 적어보았다..

1. 내가 제작한 화면이 서비스의 기획이 의도한 바를 명확히 담아내었는가?
2. 내가 만든것이 사용자들 입장에서 수긍할 수 있는 것인가?

이와같은 사항들 때문에 프론트엔트 개발자들은 항상 디자이너, 기획자들과 많은 커뮤니케이션을 하고, 또 그들이 요구하는 UI, UX구현을 위해 그 많은 시간동안 삽질?을 하는 것이다.

화려한 컬러, 이펙트, 사운드도 중요하지만, 그 외에 프론트 개발자들이 더 중요하게 신경써야 하는부분이 있다.

- 어플리케이션 크래쉬 핸들링 : 에러 리포팅, 사용자에게 적절한 에러 안내 문구 OR 화면 제공
- 기기별 소프트웨어별 호환성 체크 : 요새는 하나의 앱을 여러 Device 에서 접속하여 사용하는 경우가 있다. 앱 화면이 일그러지는 경우도 있고, 간혹 기능이 제대로 동작하지 않는 경우도 발생한다. 이것에 대한 테스트 및 예외처리는 필수. 멀티 플랫폼 호환성이 좋은 오픈소스를 가져다 쓰는것도 한 방법이겟다.



5. 백엔드 서비스 개발

Back-End 는 사람에 비유했을때... 뇌(=생각)?! 라고 보면 된다.
ㅋㅋㅋ 비유가 좀 그렇긴 한데.... 백엔드는 프론트 엔드에서 사용자에게 보여줄 모든 데이터를 설계, 생성, 관리, 하며 "안정적으로" 공급하는 역할을 한다. 즉, 서비스의 실질적인 로직과 데이터를 제공하는 원천이 되는 것이다.

간혹, 백엔드가 필요없는 서비스가 있다. 즉, 어플리케이션을 설치하기만 하면 인터넷사용 가능 여부와 상관 없이 사용자가 혼자서 오프라인으로 즐길수 있는 서비스 말이다. 이런 형태의 소프트웨어는 옛날의 CD 게임이라던가,,, 오프라인 사전 이라던가.. 등등...이 있을것이다. 이런것들은 서버가 필요 없다. 하지만 근래 대부분의 서비스는 앱을 키고, 인터넷을 이용하여 매 화면마다 서버와 "통신"하여 특정 정보를 불러온다. 이러한 서비스들은 서버가 없으면 죽은 껍데기나 다름이 없는 것이다.

어떻게 생각해보면... 백엔드 프로그램은 중요한거 같기도, 안중요한것 같기도... 하다.
일단 서비스를 런칭 하기 위해서 프론트는 선택이 아닌 필수이지만 백엔드는 그렇지 않기때문에...
그리고 백엔드 서포트가 필요한 서비스의 경우, 서버가 없으면 서비스가 아예 불가능하기 떄문에...

어쩃든,, 백엔드 개발이 해야할 일들을 간단히 살펴보면 아래와 같다.
서버 종류는 다양하지만 여기서는 웹개발에 필요한 백엔드 개발을 이야기 한다.

- 데이터베이스 설계
- 서버 발주 및 세팅 = 서비스 인프라 구축
- (대량 트래픽 예상 시) 스트레스 테스트
- 데이터 load > processing > 전달 + 비즈니스 로직
- API 설계 및 개발

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

내가 했던 대략적인 전체 작업 진행방식

- 세부 기획서 작성 및 필요 기능 명

- 전체 서비스 Flow 설계 및 데이터 베이스 구축

- 인증 API (= Authentication, User 관리) 개발 : 로그인, 로그아웃, 비밀번호 찾기 / 변경, 사용자 정보 추가 / 편집 / 삭제

- 서비스 화면에 따라 아래와 같은 순서로 개발 진행
1. 운영툴 페이지 UI 개발
2. 운영툴 DB Access Object 개발
3. 운영툴 페이지 기능 테스트
4. Client 페이지 UI 개발
5. Client DB Access Object 개발
6. Client 페이지 기능 테스트 
7. 운영툴 액션에 따른 Client 변경사항 반영

- 특정 기능을 담당하는 운영툴이 완료되었으면 그것의 Client 웹페이지 서비스 개발

- View 단 개발 할 때, 필요한 Ajax API 는 그때그때 추가해 나가며 개발

- 전체적으로 개발 단계에서는 프론트 엔드 쪽 화면 설계와 개발이 하나씩 진행될때마다,
   그것을 위해 필요한 Backend 개발(API, DAO 등)을  같이 진행했다.

- 디자인 시안을 프로젝트 사정 상, 좀 늦게 받아서, API 혹은 웹페이지 별로 단위테스트를 만들지는 못했다. 

기획 과 디자인 작업은 원래 프로젝트 개발에 들어가기전, 기획안 flow 에 의해 선행 되어있어야 한다.
내 경우에는 신규서비스 였기 때문에  더욱이 고객용 서비스의 주요 웹페이지(메인홈 등)만 전문 디자이너로부터 직접 화면 시안과 리소스를 받아 디자인을 하였다.
그래서 중간에 계속 시안이 변경되고.. 나는 또 계속 업데이트 하고.. 참... 작업 자체가 번거로웠다기 보다는 정신적으로 힘들었던것 같다;;ㅋㅋ
나 같은 경우에는 백엔드 개발 시, Front 개발을 같이 병행하며 개발을 진행해 나갔지만, 근래에는 웹 프론트 기술이 좋아져서 백엔드코드를 프로젝트에서 온전히 독립적으로 가져가 API 형태로만 제공하고 이를 호출하여 서비스 UI에만 집중하는 프론트 엔드 프로젝트를 따로 개발할 수도 있다.
개인적으로는 백엔드와 프론트 엔드 코드를 확실하게 분리하여 가져가는법도 코드의 유지보수성에 있어서 나쁘지 않은 방법이라고 생각함...




통계 위젯 (블랙)

12154
571
196097

GoogleAdsenseResponsive

Cluster map