코딩공작소

토이프로젝트 기초 기술 스택 초안 본문

어플리케이션개발/토이프로젝트(취미)

토이프로젝트 기초 기술 스택 초안

안잡아모찌 2024. 9. 23. 21:29

기술 스택 및 아키텍처 설계

1. 클라우드 환경

AWS Free Tier

  • EC2 (Elastic Compute Cloud): 애플리케이션 서버로 사용. 무료 티어 범위 내에서 Linux 기반 인스턴스를 실행하여 백엔드 애플리케이션을 배포.
  • S3 (Simple Storage Service): 정적 파일(이미지, 문서 등) 저장소로 사용.
  • RDS (Relational Database Service): 데이터베이스 서비스로 PostgreSQL 사용. JPA와 연동하여 데이터 저장 및 조회 기능을 구현.
  • CloudWatch: 애플리케이션 및 리소스 모니터링을 위한 로그 및 지표 수집.
  • IAM (Identity and Access Management): 안전한 액세스 관리와 리소스 보호.

2. 애플리케이션 프레임워크

Spring Boot

  • 의존성 관리: Spring Boot의 다양한 스타터 모듈을 사용하여 빠르고 간편한 의존성 주입 설정.
  • Rest API: 사용자와의 통신을 위한 RESTful API 설계 및 구현.
  • Security: Spring Security를 사용하여 인증 및 인가 처리.
  • H2 Database: 개발 단계에서는 H2 인메모리 데이터베이스를 사용하여 빠른 테스트 환경을 제공.

3. 데이터 관리

Spring Data JPA (Hibernate)

  • ORM(Object-Relational Mapping): JPA를 사용하여 데이터베이스와 객체 간 매핑을 자동화. 간단한 CRUD 작업을 효율적으로 처리.
  • JPQL/Native Query: 복잡한 쿼리를 처리하기 위해 JPQL과 네이티브 쿼리를 혼합하여 사용.

4. 마이크로서비스 및 클라우드 구성

Spring Cloud

  • Service Discovery (Eureka): 마이크로서비스 간의 동적 서비스 탐색 및 로드 밸런싱을 위한 Eureka 서버/클라이언트 구성.
  • API Gateway (Zuul or Spring Cloud Gateway): 각 서비스로의 요청을 관리하고 보안을 강화하기 위한 API 게이트웨이 설정.
  • Circuit Breaker (Hystrix): 서비스 간의 장애가 다른 서비스로 전파되지 않도록 보호하는 회로 차단기 패턴을 적용.
  • Config Server: 분산 환경에서 마이크로서비스의 설정 파일을 중앙 집중화하여 관리.

5. 데이터베이스

PostgreSQL (AWS RDS)

  • 데이터베이스 설계: 엔티티 관계 다이어그램(ERD) 기반의 데이터베이스 모델링. 사용자, 상품, 주문 등의 주요 도메인 엔티티 설계.
  • 성능 최적화: AWS RDS의 성능 모니터링을 통해 쿼리 최적화 및 인덱싱 작업을 진행하여 JPA 성능 튜닝.

6. DevOps 및 배포

CI/CD (GitHub Actions & AWS Elastic Beanstalk)

  • 지속적 통합/배포: GitHub Actions를 이용해 코드 변경 시 자동 빌드 및 테스트 실행. 성공 시 AWS Elastic Beanstalk에 자동 배포.
  • Docker: 컨테이너 기반의 애플리케이션 패키징을 통해 일관된 환경에서의 실행 보장.

7. 모니터링 및 로깅

AWS CloudWatch & ELK Stack

  • 로그 관리: CloudWatch와 ELK 스택을 사용해 애플리케이션 로그 모니터링 및 실시간 장애 대응.
  • Alerting: 특정 조건이 발생하면 이메일 알림을 받도록 설정하여 즉각적인 문제 해결 가능.