하루를 마무리 하기 전, 오늘 있었던 일들을 잔잔히 되짚어봅니다.
성공과 실패의 모든 요소에서 '배울 점'을 찾아내어 기록하고,
더 성장하는 내일의 나를 위해 'action plan'을 세웁니다.
어제 집에서 기술스택을 더 알아보다가 소파에서 잠들어버린 바람에 새벽에 약간 조급한 마음으로 성수 코딩도장에 도착했다.
나름 마음에 정해두었던 데드라인이 있어서.. 넘기고 싶지 않다는 생각에 오전부터 빠르게 리액트와 그 외 보충하고 싶었던 자료들을 검색하고 정리해서 1차 기술스택 결정 및 자료 조사를 마무리지었다.
지도 구현과 관련해서는 클러스터링 등 아직 모르는 개념들이 많아서 프로젝트를 진행하면서 더 공부를 해야할 영역으로 남겨두었다. 이번 계획을 가지고 개발에 돌입하겠지만 스크럼 책에도 나와있듯이 완벽하게 끝까지 가는 계획은 없다. 끊임없이 과정 중에 수정되어야 하고 유연하게 적용되어야 하고... 하루 하루 '동작하는 코드'를 만들어내기 위해 결과중심적으로 움직일 것을 다시한번 다짐하면서!!
오늘 정리한 백엔드 개발 관련 프레임워크, 프론트엔드 개발 관련 언어 & 라이브러리, 기타 기술스택 정한 내용을 아래와 같이 공유한다.
자바 웹 애플리케이션을 개발할 수 있는 프레임워크. 오픈소스
스프링은 경량 컨테이너로서 자바 객체와 라이브러리 등을 직접 관리함. 또한 WAS(Web Application Server. 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크) -> 스프링에는 예로 톰캣이 내장되어 있어 애플리케이션을 구동할 수 있도록 함
(알아가기) 경량 컨테이너란?
컨테이너란 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함하는 표준 소프트웨어 패키지. 애플리케이션의 코드를 관련 구성 파일, 라이브러리 및 앱 실행에 필요한 종속성과 함께 번들로 제공함(경량 인프라를 제공하여 어떠한 환경에서도 애플리케이션이 잘 실행될 수 있도록 컨테이너를 사용하여 약간의 수정, 또는 전혀 수정하지 않고도 여러 환경에 애플리케이션 배포 가능)
한국에 한정되기는 하나, 전자표준 프레임워크이고 개발과 관련된 공공사업 전반에 적용되므로 수요가 큼
Spring의 주요 특징들(세부내용 생략)
백엔드 개발로 선택한 메인 언어가 자바
따라서 자바 기반의 애플리케이션 프레임워크인 Spring을 우선 선택
스프링부트 프로젝트 생성 시 다양한 의존성 주입
내장서버 톰캣, 레포지토리 활용을 위한 JPA 인터페이스, 보안을 위한 Spring security framework, 개발 시 가볍게 활용할 수 있는 DB관리 시스템 H2 DB 등. 위 사항들을 활용할 수 있어 개발자가 일일이 프레임워크, 인터페이스, 라이브러리를 관리하지 않고도 주입된 것을 '활용'하며 개발에 집중 가능
DI를 통해 생산성을 꾀할 수 있음
외부에서 의존성을 주입하므로 초기 '의존관계'를 설정하고 나면 이후 의존관계를 관리하는 것은 스프링이 담당
큰 커뮤니티, 기업이 지원하는 점
페이스북(현 메타)이 개발 및 지원하고 사용자가 확대되어 커뮤니티가 크다는 장점. 지속적인 버전 관리가 가능하고 사용자가 많다는 점은 레퍼런스, 확장 라이브러리의 규모, 참고 자료의 pool이 크다는 점과 연결됨. 현재 개발하려는 서비스에 '지도' 관련 기능이 추가되어야 하며 이 기술 구현의 난이도가 상당한 만큼 참고자료의 필요성이 높다고 생각하여 위 장점이 매력적으로 느껴졌음
타 언어와 비교했을 때 얻을 수 있는 장점과 이득이 크다고 생각
Angular의 경우 프로젝트 생성, 테스팅 빌드, 배포와 같은 기능을 종합적으로 제공하나 배포와 관련해서는 다양한 대체재 및 이미 개발자가 경험해 본 타 서비스가 있으며, 타입스크립트 언어 이해도가 없는 상황에서 해당 언어를 기반으로 한 프레임워크를 선택해야 하는 당위성이 떨어짐
Vue는 러닝커브가 낮다는 장점이 있음. 다만 현재 구현하려는 서비스의 규모를 고려했을 때 view를 구성하는 코드가 하나의 파일에 모두 정의된다면 추후 서비스 유지보수 및 리팩터링과 관련한 부분에서 단점으로 부각될 것으로 예상
완전한 무료 오픈소스
상업 목적이 아니며 엔터프라이즈 규모로 개발하고 있지는 않으므로 무료임이 보장되는 오픈소스를 활용하려고 함
지도와 관련된 자료형 등 다양한 데이터 타입 지원
서비스 개발 초기 완벽하게 정의하기 힘든 DB의 형태나 스키마(SQL 사용 시) 때문에 좀 더 유연한 NoSQL인 mongoDB를 고려하였으나 PostgreSQL을 이미 사용해 본 상태에서 조사중 지도 관련 데이터 타입인 Geometric, Text search(텍스트 검색 관련), JSON 형태의 타입을 지원하는 것을 확인하였으므로 해당 DBMS 선택
오늘 기술 스택을 모두 정했고 노아님과 함께 기획 단계에 대해 간략히 이야기를 나눴다.
예전에 활용하려 했던 기획서가 노아님이 주신 예시와 비슷해서 얼른 만들고싶단 생각이 들었다.
시간이 좀 오래 걸릴 것 같지만.... 주말 내에 기획서를 모두 마무리지어야지!
기획서를 만들면서 이 서비스를 '왜' 만드는 것인지를 계속 상기해봐야겠다.
물론 취업준비를 위한 '포트폴리오'용 서비스이나 이를 통해 내가 배우고자 하는 것이 무엇인지, 고객들에게는 이 서비스가 '왜' 의미있고 가치있는지를 반복적으로 떠올리면서.
흔들리지 말고 고!!!