[portfolio](https://geonwoo.kim/ko/portfolio) › SSAFY

# 트리플랫 · 여행 금융 다이어리

https://geonwoo.kim/ko/portfolio/triplet

기간: 2023.09

환전 현금과 카드 외화 지출을 함께 기록하고, 환율을 반영해 원화로 자동 환산하는 여행 금융 다이어리입니다. SSAFY 과정 중 참가한 신한은행 해커톤에서 만들었습니다. JPA를 처음 쓰고 처음 배포까지 해 본 프로젝트입니다. 서버와 CI/CD 구축 작업의 절반을 맡았습니다.

8:1 경쟁을 거쳐 신한은행 해커톤 진출

- [github](https://github.com/Triplet-Shinhan/Triplet)

팀: 4명 · 백엔드 3, 프론트엔드 1

역할: 백엔드 API(회원, 여행, 데일리, 이미지 업로드) · 서버·CI/CD

Java 11 · Spring Boot 2.7.10 · Spring Data JPA · MySQL 8.0 · AWS S3 · AWS EC2 · Docker · GitHub Actions

- 여행 생성과 예산·보유 현금 설정
- 환전 신청
- 달력형 금융 다이어리
- 이미지 업로드

## 현실과 다른 API

문제: 실제 은행 API는 보안과 기술 문제로 제공되지 않아, 해커톤에서는 더미 데이터 API만 쓸 수 있었습니다. 거래 로직과 환율 정보를 직접 파악해 서비스를 만들어야 했습니다.

해결: 지출과 환율 정보 등 여러 상황을 가정해 추가 API와 더미 데이터를 만들었습니다. 이 데이터로 사용자 시나리오별 상황을 재현하며 기능을 만들었습니다.

## 인스턴스 자원 부족

문제: 비용 없이 운영하려 AWS 프리티어 인스턴스 하나에 모든 컨테이너를 올렸습니다. 사용량이 계속 치솟다가 인스턴스가 종료됐습니다.

해결: 유료 사양으로 올리는 방법도 검토했지만, RAM 1GB 인스턴스에 메모리 스왑을 설정해 해결했습니다. 첫 배포라 원인을 찾기까지 오래 걸렸습니다.

## 아키텍처

Netlify의 React, Nginx, EC2의 Docker에서 실행하는 Spring Boot와 MySQL, S3, GitHub Actions를 보여 주는 트리플랫 배포 구조도

GitHub Actions로 EC2에 배포하는 구성입니다.

비행기 일러스트와 로그인 창이 보이는 트리플랫 시작 화면

비행기 일러스트와 로그인 창이 있는 트리플랫 시작 화면

여행 프로젝트 목록이 있는 트리플랫 화면

여행지와 일정을 입력하는 트리플랫 프로젝트 생성 화면

달력과 일별 지출이 보이는 트리플랫 대시보드

일자별 지출 내역과 여행 사진이 있는 트리플랫 화면


[뉴집스 · 부동산 모의투자](https://geonwoo.kim/ko/portfolio/newjibs) · [herdr-cockpit · orch 작업을 보는 Herdr 레이아웃과 모드](https://geonwoo.kim/ko/portfolio/herdr-cockpit)
