Skip to content

kakao-tech-campus-2nd-step3/Team26_BE

Repository files navigation

우리 주변 인사이트, 우주인

image

목차

  • 핵심 기능
  • 구현 기능 설명
  • ERD 다이어그램
  • 코카인 팀원 소개
  • 배포 링크
  • API 명세서
  • 기능 명세서
  • 에러코드 명세서
  • Github 프로젝트

핵심 기능

KakaoTalk_Photo_2024-11-15-18-16-08 002 KakaoTalk_Photo_2024-11-15-18-16-08 003 KakaoTalk_Photo_2024-11-15-18-16-08 004 KakaoTalk_Photo_2024-11-15-18-16-08 005 KakaoTalk_Photo_2024-11-15-18-16-14 KakaoTalk_Photo_2024-11-15-18-16-17 KakaoTalk_Photo_2024-11-15-18-16-20


구현 기능 설명

📲 Android

1. 멀티모듈

1

  • 처음에는 단순히 너무 많아 정신이 없는 xml 파일을 분리해서 보고 싶어서 시작한 멀티모듈 입니다.
  • 저희 앱의 탭바를 기준으로 피처 모듈을 나누고, 핵심 기능과 데이터는 상위 모듈로 구현했습니다.
  • 구현은 어려웠지만, 분리된 모듈에서 각자 작업하다 보니 멀티모듈을 적용하기 전보다 충돌 횟수가 현저히 줄어들어 만족했습니다.

2. 딥링크를 통한 내비게이션

2 3
  • 기능 모듈끼리 서로 참조하고 있지 않고 있기 때문에 모듈 간 화면 전환을 할 때 어떻게 해야 할지 막막했습니다.
  • 딥링크를 통해서 화면 전환을 구현하기 위해, 모든 기능이 참조 가능한 하위 내비게이션 모듈을 만들어 그 안에 딥링크를 지정하고 화면 전환을 하게 되었습니다.
  • 화면 간 전달해야 하는 데이터의 경우, 행사 id, 멤버 id와 같은 간단한 데이터였기에 전달이 용이했습니다.

2. 지도 뷰

image
  • 사용자의 위치 정보를 바탕으로 실시간으로 주변 정보를 조회하는 기능을 구현했습니다.

  • 최대한 과부하를 덜 주기 위해, 약 20초의 간격을 두고 사용자의 위치를 파악하여 지도에 주변 행사를 마커로 띄우는 것을 구현했습니다.

  • 화면 범위 안에만 들어오는 행사를 불러오기 위해, 화면의 시작 위도 경도, 끝 위도 경도를 계산하여 불필요한 데이터 요청을 최소화했습니다.


🔙 BE

1. Spring Security

  • Spring Security를 활용해 애플리케이션의 인증 및 권한 관리를 구현하였습니다. JWT 기반 토큰 인증과 커스터마이징된 필터를 통해 보안을 강화하였습니다.

2. OAuth(구글 로그인, 카카오 로그인)

  • 구글과 카카오의 OAuth 인증을 통합하여 사용자가 간편하게 소셜 로그인 기능을 이용할 수 있도록 구현하였습니다.
  • 각 플랫폼의 사용자 정보를 통해 회원가입 없이 서비 스를 바로 이용할 수 있게 했습니다.

3. 카카오페이 결제

  • 카카오페이 API를 활용하여 사용자가 앱 내에서도 편하게 결제를 할 수 있도록 구현했습니다.

4. AOP 로깅

  • AOP(Aspect-Oriented Programming)를 활용하여 공통적으로 필요한 로깅 기능을 분리하였습니다.
  • 주요 서비스의 요청, 응답 및 실행 시간을 효과적으로 추적하고, 디버깅 및 모니터링에 활용하였습니다.

5. N+1 문제 해결 (페치 조인 및 배치 사이즈)

  • JPA의 N+1 문제를 방지하기 위해 페치 조인을 적극 활용하고, @BatchSize를 적용하여 필요한 데이터만 효율적으로 조회할 수 있도록 최적화하였습니다.

6. 썸네일 이미지 생성

  • 사용자가 업로드한 이미지를 기반으로 썸네일 이미지를 자동으로 생성하여, 서버 저장 공간과 전송 속도를 최적화하였습니다. 이를 통해 사용자 경험을 개선하였습니다.

7. CI/CD (Docker, GitHub Actions)

  • Docker와 GitHub Actions를 사용하여 CI/CD 파이프라인을 구축하였습니다.
  • 코드 변경 사항이 자동으로 빌드, 테스트, 배포되는 환경을 구성하여 개발 및 배포의 효율성을 높였습니다.

8. Certificate Manager, Route 53, Gabia를 이용한 https 도메인 구현

  • Gabia를 이용해 도메인을 구입한 뒤, Certificate Manager로 https 인증서를 발급하고 Route 53으로 라우팅을 설정하여 https 도메인 접속을 구현하였습니다.

9. RDS를 이용한 데이터베이스 구축

  • AWS의 RDS를 이용하여 MySQL 데이터베이스 환경을 구축하고, 백엔드 서버가 돌아가는 EC2와 연동하였습니다.

ERD 다이어그램

KakaoTalk_Photo_2024-11-15-17-58-55


코카인 팀원 소개

백엔드

전남대 BE 모아림 전남대 BE 조홍식 전남대 BE 이장안

안드로이드

전남대 Android 이민서 전남대 Android 장수민

🌐 배포 링크

백엔드

https://www.wouldyouin.store

안드로이드

https://drive.google.com/file/d/1JzK60wY1RKNoUNFT1CtsWDQZR6l1gE__/view?usp=sharing


📖 API 명세서

https://www.notion.so/e8d71c13017844de97303da3c73d0840?v=8432c86ed8114eb1943ff861399fe6c1


⚒️ 기능 명세서

https://www.notion.so/67925a6cfccb412191c1e50e958e87f4


🚨 에러코드 정의서

https://www.notion.so/fba45247c95d4a129f60a8afddd1228f


👨‍👩‍👧‍👦 Github 프로젝트

https://github.com/orgs/kakao-tech-campus-2nd-step3/projects/26

Releases

No releases published

Packages

No packages published

Languages