ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기가막힌 아이디어를 개발부터 서비스 출시까지 필요한 기술은?
    개발일지/개발생각 2022. 7. 11. 22:50

    우리는 살면서 불편을 경험할 때가 있습니다. 

    그런 불편을 느낄 때 나타날 수 있는 반응으로 크게 3가지 가 있을 것 같습니다.

     

    첫 번째 유형 아무 생각이 없다.

    두 번째 유형 불평불만하며 누가 이런 거 편리하게 만들어주면 안 될까?라는 불평불만을 토로하는 유형

    세 번째 유형 불편한 것을 해소시면 많은 사람들이 사용하겠지? 기회 포착형 

     

    여러분은 어떤 유형인가요? 

     

    여기서 만일 당신이 세 번째 유형에 속하신 분이라면 

    아이디어를 서비스로 만들기 위해 각자의 방식으로 만들어 갈 텐데

    만들어가는 방법으로도 크게 3가지가 있을 수 있습니다. 

     

    첫 번째 난 돈이 많으니까 그냥 외주 돌려서 만들면 돼 유형

    두 번째 뜻이 맞는 사람들 불러 모아 만들어내는 유형

    세 번째 인생은 독고다이야 내가 처음부터 끝까지 다해야지 유형 

     

    일반적으로 이런 상황에 있다면 어떤 유형에 속하는지 살펴보겠습니다.

     

    첫 번째의 경우 아주 심플하고 손쉽게 아이디어를 서비스로 만들 수 있는 방법이라 할 수 있습니다 

    하지만 적지 않는 비용이 발생할 수 있고 여유가 없다면... 패스…

     

    두 번째의 경우 인맥과 리더십이 필요합니다. (리더십 혹은 커뮤니케이션 능력이라고 할 수 있겠네요)

    하지만 우리들에게 믿을만한 인맥이 개발과 디자인을 할 수 있는 능력자 일 확률은 매우 희박할 수 있으니 패스…

     

    그렇다면 세 번째만 남았죠 

    사실 세번째 방법이 현실적일 수 있다고 생각할 수 있습니다. 

    나 혼자 하니까 돈들 일도 없고, 그리고 혼자 개발하니까 커뮤니케이션 능력 또한 필요가 없을 테니

    스스로 공부해서 출시해보자 하시는 의지의 사나이분들 계실 것입니다. 

     

    과연… 현실적으로 가능할지 ~ 지금부터 개발부터 서비스 출시까지 필요한 기술들을 한번 정리해 보도록 하겠습니다. 

     

    서비스는 다양한 형태로 사용자들에게 제공됩니다.   

    모든 형태에 대한 서비스를 제가 다 알 수 있는 것이 아니기에 

    제가 경험했던 웹 서비스 분야와 앱 서비스 분야만을 살펴보도록 하겠습니다. 

    또한 간단한 유틸성 서비스 말고 회원관리가 필요한 서비스 기준으로 정리해보겠습니다.

     

     

    사용자가 서비스를 사용하는 과정으로 하나하나 파 들어가면서 필요한 기술들을 살펴보는 것으로 설명드리겠습니다.

     

     

    사용자가 웹 사이트에 접속을 했습니다. 

    웹 사이트 페이지가 뜨는군요

     

    여기서 보이는 화면에 모든 시각적인 것들을 웹 디자이너가 디자인을 하게 됩니다. 

    photoshop 제플린 피그마 등등 디자인 툴을 통해 원하는 디자인을 만들고 가이드를 만들어 냅니다. 

     

    해당 디자인의 가이드라인에 맞춰 html/css를 활용해 화면을 퍼블리싱합니다. 

    이 부분에서 html 마크업 할 수 있어야 하며 css를 통해 원하는 위치에 배치해야 합니다

    또한 사용자 환경이 전부 다르기 때문에 반응형을 고려해서 코딩해야 합니다. 

     

     

    사용자가 회원가입 버튼을 통해 회원 가입을 시도합니다.

     

    여기서 사용자의 입력에 따른 이벤트를 시각적으로 가이드해줘야 하며 

    사용자의 입력이 서버에 전달되기 전 필요한 항목들이 올바르게 작성되었는지 

    체크 등의 여러 이벤트들을 제어하게 됩니다.

     

    이 부분에서 javascript 를 통해 사용자의 액션 및 여러 이벤트들을 개발하게 됩니다.

    javascript로 개발이 되는데 dom을 직접 작업하는 형태보다는 framework를 사용해 개발합니다.

    (vuejs , react, angularjs 등이 있습니다,)

     

    사용자가 입력한 회원 정보를 서버로 전달됩니다.

     

    이 부분에서 frontend와 backend의 http/https 통신을 통해 데이터를 전달하게 됩니다. 

    frontend에서는 보통 axios 나 fetch를 사용하여 서버로 데이터를 전송합니다.  예전에는 ajax를 사용했습니다. 

    backend에서는 Rest API 서버라고 불러우며 (java , nodejs, php , python 등등 언어로 서버를 구축할 수 있습니다.) 

    java의 경우 spring 프레임워크가 있으며 nodejs의 경우 express 나 nestjs 가 있습니다. 

    Php와 파이선의 경우는 제가 다뤄 보지 않아서 잘 모르겠습니다. 

     

    서버로부터 전달받은 데이터를 데이터베이스에 저장합니다. 

     

    데이터 베이스에 저장하기 전 frontend에서 유효성 검사를 했지만 서버에서도 유효성 검사를 해준 뒤 이상 없는 데이터만 

    데이터베이스에 저장시킵니다. 

    여기서 데이터 베이스를 어떤 것으로 할지도 필요합니다. 

    관계형 데이터 베이스로(Sql DB) 할지 비 관계형 데이터 베이스로(noSql DB) 할지

    관계형 데이터베이스로 대표적으로 오라클 , mysql 이 있습니다 

    noSql로 대표적으로는 mongodb, firebase database , elasticsearch 가 있습니다. 

     

    결정된 db에 따라 Rest API Server에 맞는 라이브러리를 사용해야 합니다. 

    대표적인 라이브러리는 Java Spring의 JPA , nodejs  typeorm , 나 mongodb의 경우  mongoose가 있습니다. 

     

     

    일련의 과정이 서버 로그로 저장됩니다. 

     

    서버 인프라의 경우 Rest Server와 DB서버가 있을 수 있으며 초기에는 한대의 서버에서 관리해도 무관합니다. 

    서버의 경우 물리 서버를 이용하거나 클라우드 서버를 이용할 수 있습니다. 

    물리서버를 임대해서 사용할 경우 월 사용료를 지불하는 방식이지만 클라우드 서버의 경우 사용한 양만큼 지불하는 방식입니다. 

    클라우드 서버가 구성만 잘하면 정말 안전하고 많은 트래픽에 두려워할 필요 없이 서비스를 운영할 수 있겠지만 

    비용이 생각보다 많이 발생될 수 있습니다. 

    그렇다고 물리 서버를 임대해서 진행하게 될 때에는 항시 모니터링을 통해 서버 상태를 체크해줘야 하며 사용자의 몰려 서버 장애에 대한 대응이 늦을 수 있습니다. 

     

    인프라를 물리 서버로 하던 클라우드 서버로 하던 서버 구축에 필요한 기술로는 단연 docker 가 있습니다. 

    Docker swarm이나 쿠버네티스를 통해 자동적으로 클러스터링을 도와주는 툴도 알아야 합니다.  

    혹은 aws 만 잘 학습하면 인프라 구축 및 운영은 걱정 없을 것입니다.

     

     


    앱의 경우 

    Step2 만 다르고 나머지는 동일하다고 생각하시면 됩니다. 

     

    Native app으로 개발할지  크로스 플랫폼 GUI 애플리케이션 프레임워크로 개발할지 

    Native app 으로 개발할 경우 안드로이드 : Java 나 Kotlin을 알아야 하며 

    iOS : Objective-c 나 Swift를 알아야 합니다.

     

    크로스 플랫폼 프레임워크로 개발할 경우 

    reactive native를 사용하거나 

    Flutter를 사용하거나 합니다. 

     

     


     

    이렇게 해서 서비스를 만들기 위해 필요한 기술 스펙에 대해 살펴봤는데요

    심플하게 한 표로 정리해보자면 다음과 같습니다. 

    백엔드와 프론트엔트로 구분되어 정리하였습니다.

     

    대략적으로 이 내용을 알고 계시는 분들도 계시겠지만 

    생각보다 많은 부분을 고려해야 하고 학습해야 하는구나 하면서 아이디어를 서비스로 만들지 못하겠구나… 

    라고 좌절하시는 분들이 계실 수 도 있을 것 같은데요. 걱정은 노노입니다.

    제가 열거한 기술 스펙의 경우는 서비스 규모가 있거나 팀 단위 혹은 회사에서 진행되는 프로젝트에서의 상태를 말씀드린 것이고 만일 1인 개발자가 진행하게 된다면??

     

    클라우드 서버를 추천드립니다. AWS 나 파이어 베이스를 추천드리겠습니다.

    AWS , 파이어 베이스의 경우 프론트앤드 개발자들을 위해 고안하여 만들어진 서비스로 

    어렵지 않게 사용이 가능합니다. 물론…. AWS는 어렵긴 합니다만 파이어 베이스는 손쉽게 사용할 수 있습니다. 

     

    파이어 베이스를 사용하게 된다면 server세팅이 필요 없고 디비 세팅이 필요 없을 뿐 아니라 인프라 구축 또한 필요 없습니다. Step1 과 Step2 만 고려하시면 서비스를 만들 수 있습니다. 

     

    이상으로 서비스가 만들어지기 위해 알아야 하는 기술에 대해서 정리해봤습니다.

     

     

    댓글

Designed by Tistory.