
이전 포스트에서 언급했듯이 저는 백엔드 포지션을 맡았기 때문에 프론트에 대해 자세하게, 정확하게 알지 못해 프론트에 대한 설명은 언급 정도만으로 넘어가도록 하겠습니다.
앱 개발에 있어 (특히 이런 소규모, 학교 프로젝트의 경우) 환경을 잘 확보하기 어려운 분야가 있습니다.
바로 iOS 개발입니다.
저희 팀 역시 iOS 개발에 필요한 맥북이 팀원 수에 비해 모자랐고, 안드로이드를 이용해 개발하기로 했습니다.
물론 리액트 네이티브를 이용하는 방법도 있었지만 프론트 팀에서 안드로이드를 사용하는 것으로 결정했기 때문에 백엔드는 해당 결정을 따랐습니다.
프론트의 경우 사용 기술과 사용법은 정확히 모르기 때문에 백엔드만 다루도록 하겠습니다.
Spring
우선 Spring Boot를 이용해 WAS를 구성했습니다.
Java를 이용해서 개발을 진행했기 때문에 자바 진영의 프레임워크인 Spring을 선택했고, 더 편한 사용을 위해 Spring Boot를 선택했습니다.
인증, 권한 부여 등을 구현하기 위해 Spring Security를 사용했습니다.
DB와의 통신을 위한 ORM은 Spring Data JPA를 사용했습니다.
MySQL
DB는 MySQL로 구성했습니다.
관계형 DB로 사용하기에 직관적이고, 너무 무겁지 않고, 성능도 적당히 뽑아줄 수 있기 때문에 MySQL을 선택했습니다.
— 이 위로는 프로젝트 개발 전 사용하기로 선택한 기술입니다. —
— 이 아래로는 프로젝트 진행 중 도입해 사용한 기술입니다. —
G-mail SMTP
비밀번호 재설정 기능을 구현하기 위해서 메일 인증 절차를 추가했습니다.
비밀번호를 인코딩해서 저장하기 때문에 찾기 기능 대신 재설정 기능으로 구현했습니다.
JWT
JWT를 이용해서 토큰을 생성해 인증과 인가를 구현했습니다.
FCM (Firbase Cloud Messaging)
안드로이드 스마트폰에 알림을 전송하기 위해 firbase의 FCM 기능을 이용했습니다.
nCloud
개발 완료한 백엔드 서버를 배포하기 위해 nCloud의 서버를 이용했습니다.
AWS나 GCP의 서버를 이용할 수도 있었지만 이번 프로젝트에서 nCloud 크레딧을 지원받았기 때문에 이를 이용해서 무료로 배포를 진행할 수 있었습니다.
프로젝트를 진행하기 전 개발 환경을 구축하고, 사용 기술에 대한 합의와 통일을 이끌어 내는 것은 필수적입니다. 또 적당한 기술을 선택하는 것이 추후 큰 수정을 막을 수 있기 때문에 중요한 절차라 할 수 있습니다.