Skip to content

Repository files navigation

Memory of Year

7명이 약 2개월 동안 만든 추억 앨범 서비스입니다. 저는 인증과 앨범·편지·사진 API를 맡아 프론트엔드에 연결하고, AWS에서 팀 시연이 가능한 서버를 구성했습니다.

프로젝트 한눈에 보기

항목 내용
계기 2024 멋쟁이사자처럼 데모데이 팀 프로젝트
기간 약 2개월
디자인 1명, 프론트엔드 2명, 백엔드 4명
내 역할 인증, 앨범, 편지, 사진의 백엔드 기반
협업 결과 프론트엔드 화면 연동, 배포된 API를 사용한 팀 시연
인프라 AWS EC2, DB, S3, HTTPS 직접 구성
이후 작업 2026년 앨범 소유권과 MySQL·S3 경계 재검증

팀 구성, 기간, 화면 연동과 배포·시연은 저장소 소유자가 확인한 당시 맥락입니다. 코드로 확인할 수 있는 기여와는 근거의 성격이 다르므로 PROVENANCE.md에서 따로 구분했습니다.

실제 데모 화면

아래 GIF는 2024년 팀이 시연에 사용한 프론트엔드 화면입니다. 현재 저장소에 프론트엔드 소스나 운영 서버가 남아 있다는 뜻은 아닙니다.

Memory of Year 시작 화면
서비스 시작
Memory of Year 회원가입과 로그인 화면
회원가입과 로그인
Memory of Year 앨범 생성 화면
앨범 생성
Memory of Year 편지 작성 화면
편지 작성

내가 맡은 흐름

회원가입·로그인
  → JWT로 사용자 식별
  → 앨범 생성·조회·수정
  → 앨범 안에 편지 작성
  → 사진을 S3에 업로드하고 다시 조회
  • 인증과 앨범 도메인의 entity, repository, service, controller 기반을 만들었습니다.
  • 편지와 사진의 저장·조회 API를 추가하고 프론트엔드 요청 형식에 맞췄습니다.
  • 애플리케이션과 DB, S3가 함께 동작하도록 AWS 환경과 HTTPS를 직접 구성했습니다.

2024년 기여는 공개 원본의 작성자 커밋으로 확인할 수 있습니다. 스티커 기능과 제품 전체를 제 개인 기여로 설명하지 않습니다.

화면 밖에서 연결한 배포 경계

브라우저에서 HTTPS로 EC2 API를 호출하고 DB와 S3에 연결한 Memory of Year 배포 경계

  1. 프론트엔드는 HTTPS로 EC2의 Spring API를 호출했습니다.
  2. 인증·앨범·편지 데이터는 배포 DB에 저장했습니다.
  3. 사진 파일은 S3에 저장하고 API가 URL을 돌려줬습니다.
  4. 팀 시연은 이 배포 API를 연결한 화면으로 진행했습니다.

편집 가능한 diagrams.net 원본도 함께 보관합니다. 이 그림은 당시 배포 경계를 설명하며 장기 운영, 가용성, 실제 사용자 규모를 뜻하지 않습니다.

2026년에 다시 확인한 문제

시간이 지난 뒤 저장소를 다시 열었을 때, 앨범 수정 요청이 인증 사용자의 소유권을 끝까지 확인하지 않는 경계가 보였습니다. 당시 팀 작업을 다시 쓴 것처럼 섞지 않고 별도 후속 작업으로 고쳤습니다.

확인한 경계 현재 검증
타인이 앨범 ID를 알아도 수정할 수 없어야 함 HTTP 403과 제목 불변을 통합 테스트로 확인
H2에서만 맞는 구현이면 안 됨 MySQL Testcontainers에서 소유권과 연관 조회 확인
S3 SDK 설정만 있고 요청 형태가 틀리면 안 됨 MockWebServer로 PUT body와 ListObjects 응답 변환 확인

대표 근거:

전체 테스트 범위와 재현 명령은 docs/VERIFICATION.md에 정리했습니다.

실행

Java 17이 필요합니다. 기본 실행은 H2를 사용합니다.

./gradlew bootRun

MySQL과 함께 실행하려면 Docker Compose를 사용합니다.

docker compose up --build

테스트:

./gradlew test

실행 후 Swagger UI는 http://localhost:8080/swagger-ui.html에서 확인할 수 있습니다.

기술

  • Java 17, Spring Boot, Spring Security
  • Spring Data JPA, MySQL, H2
  • AWS SDK for S3
  • JUnit 5, Testcontainers, MockWebServer
  • Docker Compose, Gradle

근거와 한계

  • 2024년 역할은 원본 팀 저장소의 작성자 커밋으로 연결합니다.
  • 팀 구성, 기간, AWS 배포와 시연은 저장소 밖의 경험이므로 owner-confirmed 사실로 분리합니다.
  • 2026년 소유권·MySQL·S3 테스트를 2024년 팀 결과로 소급하지 않습니다.
  • k6 스크립트는 재현 입력일 뿐입니다. 실행 환경과 raw 결과가 없는 과거 성능 수치는 주장하지 않습니다.
  • 현재 공개 운영 서버, 운영 기간, 사용자 수, 수상 결과는 주장하지 않습니다.

About

7인 팀으로 만든 추억 앨범 API — 인증·앨범·편지·사진, AWS 배포와 2026 소유권 검증

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages