Giter VIP home page Giter VIP logo

backend's Introduction

Infra Architecture

image

재난문자 크롤링 로직

image

💻 기술 스택

  • Server
    • Spring Security Springboot Spring Data JPA
    • MySQL RDS S3 EC2
    • Docker Nginx Redis

🔍 기술 스택 선정 이유

Backend

기술 스택 설명
Spring Boot 스프링 프레임워크의 웹 애플리케이션을 구축하기 위한 Spring Boot 이용
Redis 댓글 및 게시글의 좋아요의 API 사용 중 발생하는 동시성 문제에 잘 대응하기 위해 Redis 사용. Redis 인프라가 구축되어 있어 RDB단에서 lock을 거는 방법 대신 Redis 분산락 적용. 유효시간이 존재하는 refresh token과 access token을 Redis에 저장하여, 토큰 생명 주기를 나타내는 TTL 기능을 사용
Spring Data JPA + Querydsl Spring Data JPA로 관계지향적인 패러다임과 객체지향적인 패러다임 간 불일치를 매핑. Querydsl로 서비스에서 요구하는 복잡한 비즈니스 로직을 만족하기 위한 동적 쿼리 구현
Rest Template + Html Unit Rest Template로 공공데이터포털에서 제공하는 실시간 재난문자 API와의 통신. Html Unit으로 재난문자를 카테고리화하기 위한 국민재난안전포털 웹사이트 크롤링
JIB 자바 어플리케이션을 빠르게 컨테이너화 할 수 있도록 도와주는 구글 오픈 소스 사용. 도커 없이 Gradle 기반으로 빌드 수행하여 �도커 이미지 빠르게 생성 및 Docker hub에 push
Spring Security + JWT + OAuth2 웹 애플리케이션의 보안 기능 강화 및 사용자 인증 및 권한 관리를 위한 Spring Security 사용. JWT와 OAuth2로 세션 관리 없이 사용자 인증 및 정보 전송, 외부 소셜 서비스를 통한 안전한 로그인 구현
AWS AWS EC2로 가상 서버 빠르게 구축 및 관리. AWS RDS MySQL로 데이터베이스 인프라 구축. AWS S3로 대용량 파일 저장. AWS Cloud Watch로 로그 수집/제공 및 효과적인 모니터링 수행. AWS Secret Manager 로 안전하게 시스템 프로퍼티 관리

🔖 Naming Rules

  • 파일 : CamelCase + SnakeCase
  • 클래스명 : PascalCase
  • 함수/변수명 : CamelCase

📑 Commit Convention

커밋 메세지는 커밋 태그(이슈 번호): 커밋 내용 으로 작성
ex) git commit -m "Feat(#8): 로그인 기능 구현

커밋태그 설명
Feat 신규 기능 구현 작업
Fix 버그 수정
Docs 문서 수정
Style 코드 스타일 변경
Design UI 디자인 변경
Refactor 코드 리팩토링
Rename 변수, 클래스, 메소드, 패키지명 변경
Build dependencies 추가 및 삭제
Chore 기타 변경사항(빌드 관련, 패키지 매니징, CI/CD, assets 등)
Test 테스트 코드 추가

🐬 Git Flow 전략

image

브랜치명 설명
main 출시 또는 배포 가능한 코드의 브랜치
dev 다음 버전을 개발하는 브랜치
feat/[이름] 기능을 개발하는 브랜치
fix/[이름] 버그를 수정하는 브랜치

backend's People

Contributors

nohy6630 avatar versatile0010 avatar

Stargazers

 avatar  avatar

backend's Issues

[Feat]: 마이페이지 API

Issue

  • 이슈 내용: 마이페이지 API

Branch Name

  • 생성 브랜치 이름 : feat/mypage

To-Do List

  • 마이페이지 홈 API
  • 후원 히스토리 API

[Fix]: 온보딩 api 실명 입력 추가

Issue

  • 이슈 내용: 온보딩 api 실명 입력 추가

Branch Name

  • 생성 브랜치 이름: fix/onboarding_realname

To-Do List

  • 온보딩 api 실명 입력 추가
  • 소셜로그인시 신규 회원 여부 응답 추가

[Feat]: CloudWatch 연결하기

Issue

  • 이슈 내용: 현재 서버 상에 여러 도커 컨테이너가 올라가 있는데, 로그를 확인해야 하는 경우 직접 접속해서 일일히 확인해주어야 하는 불편함이 존재한다. 또한 컨테이너 로그를 실시간으로 확인할 수 없다.
    • CloudWatch 를 연결하여, 컨테이너 별 실시간 로그를 쉽게 확인할 수 있도록 인프라 작업을 수행하자.

Branch Name

  • 생성 브랜치 이름 : fix/cloud-watch

To-Do List

  • 도커 컨테이너 로그를 AWS Cloud watch 에서 확인할 수 있도록 셋업

[Fix]: 온보딩시 fcm토큰 추가

Issue

  • 이슈 내용: 온보딩시 fcm토큰 추가

Branch Name

  • 생성 브랜치 이름 : fix/onboarding_fcm

To-Do List

  • 온보딩시 fcm토큰 추가

[Feat]: 소셜 로그인 구현

Issue

  • 이슈 내용: 소셜 로그인 구현

Branch Name

  • 생성 브랜치 이름 : feat/login

To-Do List

  • jwt 토큰 발급
  • 네이버 로그인 api
  • 카카오 로그인 api
  • redis 이용한 refresh token 구현

[Feat]: 대피소 데이터를 DB 에서 관리한다.

Issue

  • 이슈 내용: 대피소 raw data를 rdbms 에서 관리하기.

Branch Name

  • 생성 브랜치 이름 : feat/shelter

To-Do List

  • JPA, Querydsl 기본 셋업
  • Base Time Auditing 셋업
  • 대피소 엔티티 구현
  • excel 로 된 raw data 를 rdbms 에 저장
  • 위경도 좌표계 변환

[Feat]: 후원 페이지 API

Issue

  • 이슈 내용: 후원 페이지 API

Branch Name

  • 생성 브랜치 이름 : feat/sponsor

To-Do List

  • 후원 데이터 구조 구축
  • 응원 데이터 구축 및 API 개발
  • 후원 페이지API 개발

[Fix]: cicd small bug fix

Issue

  • 이슈 내용: cicd 과정 중 발생한 버그 수정

Branch Name

  • 생성 브랜치 이름 : feat/cicd

To-Do List

  • 버그 수정

[Feat]: 온보딩 API

Issue

  • 이슈 내용: 온보딩 API

Branch Name

  • 생성 브랜치 이름 : feat/onboarding

To-Do List

  • 닉네임 설정 api
  • 재난유형 설정 api
  • 지역 설정 api
  • (온보딩 관련은 아니지만) 회원가입시 소셜에서 사용자 이름 가져오기

[Feat]: 예외는 한 곳에서 처리한다.

Issue

  • 이슈 내용: Controller Advice 와 Custom Exception 을 구현한다.
    • S3, Cloud front 관련 작업을 수행하던 중 예외처리 코드의 필요성을 느껴 본 이슈를 올립니다!
    • Filter 단에서 발생하는 예외는 처리하지 못하기 때문에, Security 관련 예외를 처리하는 Filter 는 추후에 구현해주어야 한다.

Branch Name

  • 생성 브랜치 이름 : feat/exception-handler

To-Do List

  • Controller Advice 구현
  • Custom Exception 구현

[Feat]: 펀딩 관련 API

Issue

  • 이슈 내용: 펀딩 관련 API

Branch Name

  • 생성 브랜치 이름 : feat/funding

To-Do List

  • 펀딩 관련 db 설계
  • 펀딩 관련 API 구현

[Feat]: 로깅 관련 작업

Issue

  • 이슈 내용: 현재 별도의 로깅이 필요한 경우, log.info("로깅 내용") 과 같이 개발자가 직접 로깅 시점, 내용을 입력해주어야 하는 불편함이 존재한다. Spring AOP 를 이용하여, 수동으로 로깅하지 않아도 각 요청 당 로그가 찍히도록 개선해보자.

Branch Name

  • 생성 브랜치 이름 : feat/shelter

To-Do List

  • AOP 를 이용한 로깅 구현

[Feat]: 커뮤니티 api

Issue

  • 이슈 내용: 커뮤니티 api
  • 12일까지..

Branch Name

  • 생성 브랜치 이름 : ex) feat/community

To-Do List

  • [ ]

[Fix]: 임시 토큰 만료주기 변경

Issue

  • 이슈 내용: 프론트와의 연결 테스트를 위해서 임시 토큰 만료주기 변경 (추후에 머지는 안하고 폐기할 예정입니다!)

Branch Name

  • 생성 브랜치 이름 : fix/testperiod

To-Do List

  • 엑세스 토큰 만료주기 5분으로 변경
  • 리프레쉬 토큰 만료주기 10분으로 변경

[Feat]: 내 주변 대피소 위치 반환 API 구현

Issue

  • 이슈 내용: 내 주변 대피소 위치 반환 API 구현
    • request: 내 위치 ( 위도, 경도 )
    • response: 반경 1.5 km 내 대피소 위치를 가까운 순으로 반환
{
    content = [
                         {
                             "longitude": 
                             "latitude":
                             "distance":
                         },
                        ...
    ]
}

Branch Name

  • 생성 브랜치 이름 : feat/shelter

To-Do List

  • 내 주변 대피소 위치 반환 API 구현
  • 배포 후 swagger 공유

[Feat]: 대피소 데이터 보강 및 API 관련 작업

Issue

  • 이슈 내용: 현재 DB 에는 민방위 대피소 데이터만 존재한다. 기획에 나온대로, 다양한 종류의 대피소를 DB 에 적재하고 관련 API 를 작업해둘 필요가 있다.

Branch Name

  • 생성 브랜치 이름 : feat/shelter

To-Do List

  • shelter 엔티티 작업
  • shelter api 작업

[Feat]: 재난상황(in 커뮤니티) API

Issue

  • 이슈 내용: 재난상황(in 커뮤니티) API

Branch Name

  • 생성 브랜치 이름 : feat/situation

To-Do List

  • 기존 재난 데이터 이용하여 재난 상황 API 개발
  • 각 재난상황에 대한 대화 API 개발 (재난 상황 API와 합쳐서 한번에 반환하는게 좋을듯)

[Feat]: application properties 를 AWS secret manager 로 편리하게 관리하자.

Issue

  • 이슈 내용: 현재는 application.yml 등의 값의 변경이 생길 때 마다, 수동으로 전달해서 알려줘야하는 불편함이 존재한다. 보안적인 측면에서도 좋지 않다. AWS secret manager 로 application propreties 값을 관리하도록 한 다음, 로컬에서는 python script 를 실행해서 편리하게 (가장 최신의 properties 값을 ) 가져올 수 있도록 개선해보자.

Branch Name

  • 생성 브랜치 이름 : feat/get-secrets

To-Do List

  • AWS secret manager 에 secret 값 등록
  • get_secret.py 작성
  • update_secret.py 작성

[Feat]: 가족 API(알림 제외)

Issue

  • 이슈 내용: 가족 API(알림 제외)

Branch Name

  • 생성 브랜치 이름 : feat/family

To-Do List

  • 가족 목록 조회 API
  • 가족 추가 API
  • 가족 삭제 API
  • 가족 상태 갱신 API

[Feat]: Slack과 github 를 연동한다.

Issue

  • 이슈 내용: 작업 진행 상황을 효과적으로 공유하기 위해, issue, PR, push 등의 작업이 발생하였을 때 NumberOne backend 채널에 알림이 가도록 구현한다.

Branch Name

  • 생성 브랜치 이름 : none
    • 코드 수정 사항없이 github - slack app 내에서 설정만 해주면 된다.

To-Do List

  • owner 권한 받은 뒤, git-slack 연동

[Feat]: 실시간정보(GPS, 온오프라인) 관련 API

Issue

  • 이슈 내용: 실시간정보(GPS, 온오프라인) 관련 API

Branch Name

  • 생성 브랜치 이름 : feat/realtime

To-Do List

  • GPS 받아와서 해당 멤버의 갱신하는 데이터 api
  • 사용자 온오프상태 변동 api
  • 프론트에서 member id 저장을 위해 로그인시 멤버Id반환 하도록 api 수정

[Fix]: swagger api 인가처리 가능하게 적용하기

Issue

  • 이슈 내용: swagger 에서 토큰을 이용한 인가 처리가 가능하도록 하기

Branch Name

  • 생성 브랜치 이름 : feat/swagger

To-Do List

  • securityConfig 내 shelter -> shelters 오타 수정
  • swagger 에서 토큰을 이용한 인가 처리가 가능하도록 하기

[Feat]: S3 를 setting 한다.

Issue

  • 이슈 내용: S3 Storage

Branch Name

  • 생성 브랜치 이름 : feat/s3

To-Do List

  • AWS S3 Storage 설정
  • File Uploader 구현
  • File Reader 구현

[Feat]: jib

Issue

  • 이슈 내용: jib 배포 적용

Branch Name

  • 생성 브랜치 이름 : feat/jib

To-Do List

  • cicd 파이프라인 교체

[Feat]: fcm push alarm

Issue

  • 이슈 내용: fcm push alarm

Branch Name

  • 생성 브랜치 이름 : feat/fcm

To-Do List

  • fcm push alarm 구현

[Feat]: 인수 테스트 환경을 구축한다.

Issue

  • 이슈 내용: API 품질 관리를 위해, 인수 테스트 환경을 구축한다.
  • 인수 테스트란?

Branch Name

  • 생성 브랜치 이름 : feat/test

To-Do List

  • 인수 테스트 환경 구축
  • Shelter api 에 대한 인수 테스트 코드 작성
  • test/resources/application.yml 공유하기

[Feat]: Redis publisher/subscriber 구현

Issue

  • 이슈 내용: 이벤트 pub/sub 구조를 위한 redis publisher/subscriber 구현

Branch Name

  • 생성 브랜치 이름 : feat/redis-event

To-Do List

  • 레디스 설정
  • 레디스 publisher 구현
  • 레디스 subscriber 구현

[Feat]: CI/CD 인프라를 구축한다.

Issue

  • 이슈 내용: 인프라 구축

Branch Name

  • 생성 브랜치 이름 : feat/cicd

To-Do List

  • AWS setting I ( ec2, rds mysql, elastic IP, nginx )
  • Project CI/CD setting ( git actions workflow, docker, docker compose)
  • Slack Alarm ( Every build and deployment workflow completes. )

image

[Fix]: 친구삭제 api 추가

Issue

  • 이슈 내용: 친구삭제 api 추가

Branch Name

  • 생성 브랜치 이름 : hotfix/delete_friend

To-Do List

  • 친구삭제 api 추가

[Feat]: 블루그린 배포 적용

Issue

  • 이슈 내용: 블루그린 배포 적용

Branch Name

  • 생성 브랜치 이름 : feat/bluegreen

To-Do List

  • ec2 docker-compose.yml 수정
  • ec2 쉘스크립트 추가
  • 배포 yml 수정

[Feat]: git 배포 대상 정책 확립하기

Issue

  • 이슈 내용:
    현재 급한 배포 사항이 있을 시 fix/** 브랜치를 따로 빼서 배포하고 있는데, 배포 대상 브랜치가 너무 많아지는 문제가 발생...
    추후 의도치 않은 배포가 일어날 가능성이 있음..
    그러므로 배포 대상 브랜치를 확실하게 정해서 혼란을 예방해보도록 하자!

Branch Name

  • 생성 브랜치 이름 : feat/git-strategy

To-Do List

  • 배포 대상 브랜치를 정리
  • fix/** 브랜치 모두 제거

[Fix]: 홈 진입시 gps 갱신

Issue

  • 이슈 내용: 홈 진입시 gps 갱신

Branch Name

  • 생성 브랜치 이름 : fix/home_gps

To-Do List

  • 홈 진입시 gps 갱신

[Feat]: 재난문자 api 개발

Issue

  • 이슈 내용: 재난문자 api 개발

Branch Name

  • 생성 브랜치 이름 : feat/disaster_text

To-Do List

  • 주기적 으로 실행되는 서비스로직을 만들어 주기적으로 재난문자 db에 데이터 갱신
  • 위도, 경도를 기반으로 한 최근 재난문자 반환 api 구현
  • db데이터를 이용하여 새로운 재난문자가 발생했을 경우 프론트에 데이터를 실시간으로 전송해야함. (sse vs web socket 어떤거 쓸지 의논 필요)

[Feat]: Swagger 를 Setting 한다.

Issue

  • 이슈 내용: Springdoc-openapi-ui셋업

Branch Name

  • 생성 브랜치 이름 : ex) feat/swagger

To-Do List

  • Springdoc-openapi-ui 설정
  • 배포 후 url 공유

[Fix]: cicd yml관련 수정

Issue

  • 이슈 내용: cicd yml관련 수정

Branch Name

  • 생성 브랜치 이름 : fix/cicdyml

To-Do List

  • cicd yml관련 수정

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.