Skip to content

3. 기술 선택 이유

Hyeyoung Kim edited this page Feb 17, 2022 · 2 revisions

Spring Boot, Spring Data JPA

  • 스프링 부트는 많은 설정을 기본적으로 갖추고 있고 Apache Tomcat이 내장되어 있습니다.
  • 스프링 Data JPA는 JPA를 더 쉽고 편하게 사용할 수 있게 해줍니다.

Spring Security + JWT

  • 스프링 시큐리티는 보안과 관련된 많은 옵션을 제공하므로 일일이 보안 관련 로직을 작성하지 않아도 됩니다.
  • JWT는 서버가 토큰을 발급하고 보내주면, 토큰이 클라이언트에 저장되기 때문에, 확장성이 좋습니다.
    또한, 토큰 기반 인증 방식은 다양한 도메인에 관리하기가 쉽습니다.

Spring Rest Docs

  • API 검증하고 자동으로 문서화하기 위해 사용했습니다.

MySQL

  • 오픈 소스 라이센스를 따르기 때문에 무료로 사용할 수 있어서 사용했습니다.
  • 정형화된 데이터 구조를 사용하기 위해 사용했습니다.

Git

  • 프로젝트 형상 관리를 위해 선택했습니다.
  • Milestone, Projects kan-ban board, branch, issue, PR를 사용하여 코드 리뷰, Merge를 진행했습니다.

Github Actions

  • CI/CD 파이프라인을 구축하여 제대로 작동하는 소프트웨어를 자주 빠르게 배포하기 위해 사용했습니다.

프론트엔드 서버 인프라

  • S3와 CloudFront로 구성하였습니다.
    • S3의 정적인 웹호스팅 기능을 사용하여, 정적인 컨텐츠에 간단하고 유연하게 접근해주었고,
    • Cloud Front를 통해, 웹 컨텐츠를 사용자와 가까운 곳에 전송함으로, 전송속도를 높여주었습니다.

공통 서버

  • Gabia DNS를 사용하여, 프론트엔드 프로덕트 서버와 백엔드 프로덕트 서버의 API 통신이 되게 설정해주었습니다.
  • AWS Certificate Manager는 SSL 인증서를 받기 위해 사용해주었고,
  • AWS WAF를 통해, 웹의 비정상적인 트래픽을 탐지하고 차단하기 위해 사용해주었는데,
    SQL Injection 차단 서비스를 설정해주어 보안을 강화시킬 수 있었습니다.

백엔드 서버

  • ElasticBeanstalk로 백엔드 아키텍처를 구성하였습니다.
    EB는 간단한 옵션만 조절하여, EC2와 ELB와 환경변수 값을 한번에 관리할 수 있습니다.
  • EB는 웹 애플리케이션을 배포하기 위해 사용했고 RDS를 연동시켜주었습니다.
  • Docker는 빠르고 가볍게 동일한 개발환경을 구축하기 위해 사용했습니다.
  • 또한, AWS ECR는 Container Registry로써, EB에 Docker 이미지를 배포하기 위해 사용했습니다.

Kakao Message API & OAuth2

  • TIL 작성을 잊지 않도록 알람 Message 제공하는 API를 많은 사용자에게 제공하고 싶었습니다.
    SNS 서비스로 가장 많이 사용하고 있는 Kakao API를 선택했습니다.