다흰은 1365 봉사활동 사이트를 기반으로 재설계된 봉사활동 모집 커뮤니티 플랫폼입니다. 사용자는 간편하게 봉사활동 정보를 탐색하고, 로그인 및 회원가입을 통해 커뮤니티에 참여할 수 있습니다.
- 데이터 시인성: 주변 봉사 기관과 봉사 활동 정보를 직관적으로 한눈에 볼 수 있도록 구현
- 간편한 로그인/회원가입: 소셜 로그인을 활용해 사용자에게 간단한 회원가입 유도
- 지도 서비스: 사용자의 위치를 활용해 주변에서 운영 중인 봉사활동과 봉사기관 정보 확인
- React
- Spring Boot
- Spring Security
- QueryDSL
- Redis
- MySQL
- GitHub Actions
- Docker
- AWS S3
- AWS EC2
- AWS CodeDeploy
- Nginx
- OAuth2 + JWT: OAuth2와 JWT를 사용해 간편한 회원가입과 로그인, 안전한 인증 및 인가 처리를 지원합니다.
- CI/CD: GitHub Actions를 통한 지속적 통합(CI)과 AWS CodeDeploy를 활용한 지속적 배포(CD)를 지원합니다.
- 블루/그린 배포: Nginx를 활용해 블루/그린 배포 방식으로 무중단 배포를 지원합니다.
- 비밀번호 찾기: 일반 로그인 사용자는 이메일로 비밀번호 찾기 메일을 받아 안전하게 비밀번호를 변경할 수 있습니다.
- Docker 인프라: Docker를 사용하여 안정적인 인프라 서비스 환경을 구축했습니다.
- Redis 활용: Redis를 사용해 유저의 JWT 리프레시 토큰 저장과 랭킹 서비스 기능을 구현했습니다.
- QueryDSL 사용: 동적 쿼리를 사용해 유연하면서도 안전한 쿼리를 구현했습니다.
- Docker 활용: Docker를 사용하여 Kafka, Redis, MySQL을 안정적으로 운영하는 경험을 쌓았습니다.
- 무중단 배포: Nginx를 활용한 블루/그린 배포로 무중단 배포를 구현했습니다. 하지만, 블루/그린 배포의 단점으로 인스턴스 수가 두 배로 증가하여 EC2의 비용 부담이 발생했기 때문에, 앞으로는 카나리 배포 방식도 고려할 필요가 있습니다.
- 테스트 코드 작성: 테스트 코드를 사전에 작성하지 않고 나중에 한꺼번에 처리하려다 많은 오류와 시간 소모가 발생했습니다. 도메인 구현 후에는 테스트 코드를 작성하는 습관의 중요성을 깨달았습니다.
- KAFKA 미활용 : KAFKA를 활용하여 운영해볼려 했으나 단일 서버에서는 사용할 이유가 없다는 것을 느끼고 활용하지 않았습니다. 해당 스택에 대해 장단점을 인지하고 사용해볼 필요가 있다는 것을 느꼈습니다.