하고싶은건 많은데 주제가 정해지지 않았음.
그래서 대략적으로 무엇을 하고싶은지 적어보려고 함.
위 3가지 조건을 만족하고 싶음.
가장 중요한건 내가 만들고 싶은 프로그램. 나는 개발자를 지향하고, 개인 프로젝트에서 수동적인 코딩은 하기 싫음. 그리고 많은 사람들이 써보며 피드백을 받았으면 좋겠고, 백엔드적 지식/경험을 습득할 수 있었으면 좋겠음
+CI/CD
각 프레임워크 선정 이유는 다음과 같다.
Spring
Nest.js를 썼을때 가장 좋았던 부분은 MVC이다. 구조를 꽉 잡아주고 있기 때문에 코딩하기도 편했고 방향성을 잡기 쉬웠다. 좀 더 해보고 싶었지만, Spring 프레임워크가 어떻게 작동되는지 확인해보고 싶었기에 사용한다.
React
이전 프로젝트에서 너무 편하게 코딩 했었다. ReactHook을 활용한 압도적인 편리성, Component 구조를 활용한 가독성 등등 왜 프론트앤드 1등 라이브러리인지 뼈저리게 체감하였다.
Svelt를 사용하고 싶었지만 주력이 백엔드라는점, 그리고 아직은 부족한 커뮤니티 등으로 인해서 React를 쓰기로 하였다.
TypeScript
js에 비해 확실히 어렵다. 강타입 언어라서 자료형을 다 지정해 주어야 하기 때문에 쉽지 않을 것이다. 하지만 js의 기가막힌 버그 발생을 몇번 보고나니.. 이왕 배우는 김에 힘들게 해보자고 생각했다.
PostgreSQL
ORDBMS가 재밌어 보였다. MVCC가 기존 RDBMS보다 훨씬 빠르다고 한다.
또한 MySQL이 요즘 요금관련해서 말이 많이 나오기 때문에 maria와 postgre 중에 고민했었다..
Git
말이 필요없는 버전관리/커밋 로그 저장소. 설명은 생략
AWS
쓸지 안쓸지는 모르겠다. 목표는 배포를 하는거긴 한데 현실적으로 따지면 내가 배포를 할 만큼 완성도 있는 코드를 짤 수 있을지 불확실하다. 코드 작성을 우선으로 하고 배포는 2순위
Locust
프로젝트때 팀원이 사용했던 부하테스트 툴이다. 시간별로 서버가 얼마나 부하를 받는지, 부하를 얼마나 가할건지 등등을 설정할 수 있다.
CI/CD
아직 뭔지 모른다. 뭐가 있다는 것만 알지 재대로 모르기 때문에 조금 더 공부가 필요한 사항.
좀 생소한 분야라서 이렇게 적어도 되는지는 모르겠지만
중요한 키워드는 애자일 / TDD 이다.
아니 무슨 혼자 개발하는데 애자일까지 들먹이냐?
라고 생각하신다면, 맞는 말이긴 하다.
하지만, 내가 하려는 프로젝트 특성상 구현하려는 기능이 명확하고,
서버 부하 테스트를 하고 싶다는 욕심이 있기 때문에,
빠르게 local 개발을 끝내고 싶다.
따라서 TDD를 통해 최대한 빨리 기능만을 구현하고 배포하는것을 목표로 삼을 것이다.
위의 프레임워크를 사용하면 프론트 <-> 백엔드 <-> DB 기본구조가 짜여지게 된다.
이후 코드를 어떻게 짜느냐에 따라서 상당히 달라지게 되겠지만, 적어도 내가 만들고 싶은 프로그램을 만들 수 있는 기회가 되었으면 한다.