1. 왜 시작하게되었나
요가를 하다가 문득 pl@y 2처럼 사진을 캘린더 형식으로 저장하여 습관트래커처럼 사용하고 싶어졌다.
혼자 인증사진을 찍다가 문득 이걸 포트폴리오로 만들어 볼까? 하는 생각 겸,
친구랑 같이 인증사진으로 챌린저스처럼 인증사진을 서로 공유하는걸 해보고 싶었다.
2. 기술 스택의 선택
Front
스마트폰으로 바로바로 입력하고 싶어서 네이티브 밖에 선택지가 없었다.
그런데 나는 아이패드와 갤럭시폰을 쓰는 하이브리드(?) 유저다.
그래서 리액트 네이티브와 플러터를 고민했는데,
내가 아는 언어는 JS, python, JAVA가 전부다. 심지어 JAVA는 아직 익숙치 않았다.
또 플러터를 쓰면 Dart언어를 봐야하는데, 그걸 공부하기에는 시간이 부족하다고 판단했다.
그래서 JS를 이용한 RN으로 사용하기로 했다.
Back
왜 굳이 백엔드서버 구현을 하려 하는가
나 혼자 쓰면 그냥 구글 드라이브랑 연동해서 쓸까 생각했다. 그런데, 친구랑 같이 쓰고 싶다면 백엔드가 필요하지 않을까?
언어와 프레임워크
- Java, SpringBoot
- Java를 이미 알고 있는 상태에다가, 객체지향에 대해 공부하고 있었기 때문에 선택했다.
- RN에서 안드로이드 환경에는 Java를 건드려야하는 때가 온다. 이전 사이드프로젝트로 RN에서 디바이스 기능을 사용하려 Java를 건드려야했던 적이 있었다. 그래서 그 때를 대비해 Java를 공부하는 겸해서 사용해보려고한다. 솔직히 Kotlin도 한번 사용해보고 싶었는데 처음부터 시작하는 것보다 나을 것 같아서 자바를 선택했다.
- 검색 기능이 필요할 것 같다. 그래서 ElasticSearch 외부라이브러리 자동설정을 할 수 있다고 해서 선택하기도했다.
3. 서버환경
지금 더 고민이 필요한데, 대략적으로 생각하기로는 다음과 같이 생각하고 있다.
- 데이터베이스 NoSQL, mongoDB 호스팅. 512MB까지 무료이기 때문에 선택했다.
- 오브젝트 스토리지 사용여부 : AWS S3
표준스토리지가 5GB까지 무료니까 해볼만해서 선택했다.
차선택으로는 네이버 Object Storage
- 웹 서버 : AWS Lambda
일단 개인 프로젝트니까 작게 시작하고 싶었다.
차선택으로는 역시 네이버 Cloud Function
- CDN : jsdelivr - 무료
서버환경은 내일 더 생각하기로 했다 ;)
공부할게 생각보다 더 많네...