# Tech Stack: Overview

이제부터 저희가 사용하는 기술 스택(Tech Stack)의 하나하나에 대하여 선정 배경과 이유에 대하여 설명하려고 합니다. 기술 스택은 만들고자 하는 프로젝트에 종속적인데 큰 아키텍처만 놓고 보자면 저희가 개발하는 서비스는 모바일 앱과 반응형 웹, 두 가지 프론트엔드를 가지고 백엔드에서 데이터를 처리하는 아주 일반적인 구조입니다. (물론 세부적인 내용은 복잡 할 수 있으나 현재 중요하지 아니하고 상세한 아키텍처는 차후 파트 별로 풀어서 설명 할 예정입니다.)

# 기술 선정을 위한 키워드

스타트업의 특성상 유연하고 빠르게 대처가 가능한 기술들을 활용해야 합니다. 프롤로그 참고
이를 바탕으로 다음과 같은 키워드를 선정하였습니다.

# FullStack

빠른 개발과 커뮤니케이션 로스(Loss)를 줄이기 위해서 FullStack 기술을 기반으로 합니다. Backend와 Frontend로 나눠서 운영하는 것보다 서비스 전반을 이해하고 양쪽을 모두 구현 할 수 있는 것이 더 효율적이고 유연합니다. 스타트업의 특성상 인력 수급이 원활하지 않고 불안정한 상황에서 팀원간 부족한 부분을 서로 커버해주고 인원 공백에 따른 리스크도 관리 할 수 있습니다. 스타트업은 초기에 지속 가능하게(Sustainable) 팀을 운영하도록 만드는 것이 매우 중요합니다.

# Serverless

  • 비즈니스 측면: Micro Service를 구축함에 있어서 효율적입니다. 서비스를 모듈 단위로 설계가 가능해져서 빠른 비즈니스 요구 사항의 변경에도 변경이나 확장이 유연합니다.

  • 비용적 측면: 사용한 만큼의 최소한의 비용을 지불하기 때문에 비용 예측이 쉽지 않은 스타트업 프로젝트에 효율적입니다. Serverless로 구성을 하게 되면 인스턴스 기반으로 Auto Scale을 적용 하더라도 초기에 몇배에서 몇십배 비용을 아낄 수 있습니다.

  • 유지관리 측면: 유지 관리 비용이 적게 듭니다. Serverless는 DevOps 를 실현하기에 효율적입니다.

# DevOps

요즘 트렌드는 개발(Dev)과 인프라(Ops)를 따로 구분하지 않습니다. DevOps에 최적화된 기술을 사용함으로써 인프라 관리보다는 개발에 더 집중 할 수 있습니다.

AWS CTO가 Reinvent에서 "서버 관리를 하는 제일 좋은 방법은 서버를 관리하지 않는 것이다." 라고 했습니다. 제일 좋은 인프라는 인프라를 관리하지 않는 인프라입니다. 아이러니하게도 인프라 관리를 잘 할 수 있는 개발자가 다양한 형태로 확장이 가능하나 관리형 서비스(Managed Service)만 사용 해 본 사람은 그 틀에서 벗어나질 못합니다.

# Agile

개발 방식 또한 기술을 결정하는데 중요한 요소입니다. 앞서 언급한 스타트업의 불확실성과 린(Lean)을 전제로 에픽(Epic)/스프린트(Sprint) 방식보다는 칸반(Kanban) 방식으로 물 흐르듯이 유연한 개발을 하고 기술 또한 거기에 맞춰 전체적인 흐름을 유연하게 구현 할 수 있게 하는 것을 목표로 합니다.

TIP

Serverless, DevOps, Agile등에 대해서는 차후 각 주제에 대해서 자세히 기술할 예정입니다.

# 기술 선정 방법

기술을 선정할때 다음 모두를 참고하여 종합적으로 고려하여 판단해야 합니다.

구글 트렌드는 검색어를 기반으로 트렌드를 보여주는 서비스입니다. 구글 트렌드를 통해서 대단한 정보를 얻을 수는 없지만 최소한 해당 기술에 대한 사람들의 관심도와 트렌드의 변화를 알 수 있습니다.

# Stack Share

스택쉐어는 기업들이 어떤 기술 스택을 사용하고 있고 다양한 기술들의 장단점을 비교해 볼 수 있는 서비스입니다. Pinterest, Uber, Airbnb 등 다양한 스타트업들의 기술 스택과 그 선정 이유들을 알 수 있습니다.

# Github

기술 선정시 해당 오픈 소스의 Github 를 방문하여 활동 내역, Start 개수 등을 참고하여 지속적으로 해당 기술이 업데이트 되고 있는지, 충분히 인기가 있는 프로젝트인지 확인할 수 있습니다.

# Maintainer / Backer

기술의 개발자/관리자/후원자가 누군지를 확인하는 것도 매우 중요합니다. 일반적으로 개발자나 후원자가 대기업인 경우 해당 기술이 오랫동안 개발 및 유지 될 확률이 높습니다. 아무리 좋은 기술일지라도 후원과 커뮤니티가 뒷받침 되지 않으면 성장하기가 힘듭니다. 참고로 우리가 많이 알고 있는 React의 메인 개발자/후원자는 페이스북이며 Angular는 구글입니다. 대기업이 개발하거나 후원한다고 해서 해당 기술이 무조건 좋은 것은 아닙니다. 대기업들도 운영하던 기술을 접고 다른 기술로 옮기기도 합니다. Vue는 개인이 개발을 시작하였지만 한때 Github에서 React, Angular보다 인기가 많았던 적이 있고 현재 구글 트렌드에서도 Angular보다 높은 스코어를 가지고 있습니다. 개발자/관리자/후원자/커뮤니티의 중요성을 모두 고려해야 한다는 것이 핵심입니다.

# Documentation

좋은 기술이라도 문서화가 잘 되어 있지 않으면 사용하기 어렵습니다. 문서화가 잘 되어 있는지도 기술 선정 이유의 한 요소로 보아야 합니다. 단, 문서의 한글화 여부는 고려하면 안됩니다. 요즘 기술 발전 속도와 변화가 빨라서 한글화를 고려하여 기술을 선정하기에는 트렌드에 뒤쳐지기 쉽상입니다. 뼈 아프지만 영어가 부족하면 개발보다는 영어공부를 우선해야 합니다.

위와 같은 기준들과 키워드를 바탕으로 기술 스택 하나하나를 정의해 나갈 예정입니다.

기술을 선정 할때, 최대한의 지식으로 최소한의 사용, 최소한의 설정으로 최대한의 효과를 내는 것이 목표로 합니다.

Last Updated: 10/29/2020, 3:39:34 PM