Git Product home page Git Product logo

happy-delivery's Introduction

happy-delivery

배달의 민족, 요기요와 같은 배달 서비스

목표

  • 배달 서비스의 기능들을 직접 구현함으로써 Backend System을 이해한다.
  • 대규모 트래픽에도 안정적인 어플리케이션을 구현한다.
  • 나쁜 코드에 대해 지속적으로 리팩토링한다.
  • ex) 배달의 민족과 같은 배달 서비스

사용기술

  • Spring Boot, Java11, Gradle, Mybatis, Mysql, JPA, Redis ,Docker 등

Code Convention

  • Google code Style 준수
  • pre-commit과 github-action에 checkStyle을 적용하여 위반한 것이 없는지 확인

APM(Application Performance Management)

  • APM도구로 Elastic APM을 사용
  • 팀원과 구성을 공통적으로 하기 위해 docker-compose를 이용하기로 결정
  • elastic APM의 docker-compose 파일 예시
  • docker를 사용하지 않는 elastic APM 설정 예시
  • 버전은 7.17.1 사용
  • VM options 설정
    -javaagent:./elastic-apm-agent-1.29.0.jar
    -Delastic.apm.service_name=happy-delivery
    -Delastic.apm.server_urls=http://localhost:8200
    -Delastic.apm.application_packages=com.happy.delivery
    -Delastic.apm.transaction_sample_rate=1
    -Delastic.apm.trace_methods=com.happy.*
    -Delastic.apm.span_frames_min_duration=1ms
    -Delastic.apm.span_min_duration=0ms
    -Delastic.apm.trace_methods_duration_threshold=1ms
    -Delastic.apm.transaction_sample_rate=1
    -Delastic.apm.enable_log_correlation=true
    -Delastic.apm.max_queue_size=2048
    

CI

  • pre-commit을 이용해 code convention 확인
  • github-action을 이용하여 pr 시 build와 code convention 확인 (더블체크)

ERD

HappyDeliveryERD

기능정의

happy-delivery's People

Contributors

jiae5287 avatar takiki-web avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

takiki-web

happy-delivery's Issues

[#4] 데이터 베이스 연동 진행

  1. mybatis 설정 <김정훈>
  2. datasource <김정훈>
  3. ddl 작성 (table 생성) <김정훈> <석지애>
  4. flyway 구성 <석지애>
  5. HashMap ~ Repository => Mybatis ~ Repository

3월 9일 수 ; 1~2번 사항에 대해 회의

[#5] AOP

UserLoginCheck를 annotation과 Aspect를 이용하여 AOP로 만듦

[#81] 인가 관련 interceptor 코드 수정

확인해본 결과 interceptor에서 서비스에 접근하는 회원의 Authority를 확인하는 코드가 없음.
인가 관련 interceptor에서 로그인을 한 상태인지 확인한, 후에 Authority 확인하는 코드 추가.

[#2] 신규 로직 및 DB구성, CI 추가

  1. HashMapUserRepsository의 Save 로직 수정 -> (김정훈) 오늘 pr
  2. 유저 삭제 로직 추가 -> (김정훈)
  3. 사용자 정보 수정 -> (김정훈)
  4. database 구성
    - Docker 설치 -> (같이)
    - docker-compose -> (석지애)
  5. CI
    • github actions -> (김정훈)
    • gradle check & gradle build 실행하기 -> (김정훈)
    • Checkstyle html 에러 처리 -> (김정훈)

목, 토, 일, 월 8시 회의 진행

[#7] 기능 추가

< 가게 검색 기능 추가 >
가게 분류를 볼수 있다(석지애님)
가게 분류를 선택하면, 현재 주소에 맞게 가게 목록을 볼수 있다. (석지애님)
가게를 선택한다(석지애님)

< 메뉴 찾기 기능 추가 >
메뉴를 볼수 있다(김정훈님)
메뉴를 선택 한다(김정훈님)
선택한 메뉴를 장바구니에 담는다(김정훈님)

< 가게 Entity >
Id
가게명
가게분류

< 메뉴 Entity >
Id
메뉴명
메뉴 상세 내용
메뉴 가격

  • 질문사항
    배달지역 어떻게 설정 해야하나 ?

테스트 코드 작성 중

목표 : userServiceTest를 완성해서 더이상 postman으로 직접 확인하지 않게 만들기.

userServiceTest.java를 만들었습니다.
signup 관련 코드들을 복습하고, signin까지 만들었습니다.

[#8] ERD 만들기

draw.io를 통해서 ERD 만드는 중
만든 후 README.md에 반영하기

[#3] 유저 리펙토링

김정훈

  1. contoller에 exception 수정
  2. 유저 삭제
  3. 중복 exception 메서드화

석지애

  1. 전체적인 paramter 수정 command, request 수정
  2. 주소 수정 삭제 부분 권한 삽입

공통

  1. 프로젝트 방향성 , user 확장, 다른 도메인 생성 (화)
  2. 세션 중복 처리 방안 aop 등(3월 5일 추가)

토, 일, 월, 회의진행

  • 아침마다 comment로 진행사항 달고 회의진행시 구체적인 내용 토의
  • 끝난 작업은 development 추가
  • 월요일 저녁에 최종 회고 진행

[기능 명세서] 프로젝트 프로세스에서 회원가입을 언제로 할것인지

  1. 목적; happy-delivery Project를 함에 있어 배달의 민족과 같은 회원가입 프로세스로 진행할 것인지에 대한 협의가 필요하여 작성

  2. 협의 내용

    • 배달의 민족 프로세스와 같이 맨처음 사용자의 경우 주소를 적고 주문시 회원가입을 하는 프로세스로 진행
    • 배달의 민족과 다르게 맨처음 사용자의 경우 회원가입을 유도 후 주문 프로세스 진행
  3. 협의 내용에 대한 이유

    • 회원가입 -> 메뉴 선택 -> 메뉴 주문 -> 메뉴 배달과 같은 프로세스가 일반적이라 생각하고 기능명세서 작성시 일련의 과정으로 작성 가능할것 같습니다.
    • 주소기입 -> 메뉴 선택 -> 메뉴 주문 -> 회원가입유무확인 -> 메뉴 배달시 프로세스 과정이 일반적이지 않고 기능명세서 작성시 순서가 조금 뒤죽 박죽인 느낌이 있습니다.
  4. 이에 대한 issues에 개인 의견 작성 요청 드립니다.

[feature/9-restaurant-5] restaurant 관련 기능 성능 향상.

(1) @PostConstructor 를 사용한 init()을 API로 만들어서 테스트하기 편리하게 만들기.

(2) cursor 사용하는 곳을 RestaurantSearchRepository에서 RestaurantSearchService.init()으로 변경하기.

(3) pipeline 제대로 적용하기, bulk 1개를 사용해서 여러개의 음식점 위치 저장
=> Long add(K key, Map<M, Point> memberCoordinateMap); 사용

(4) where절의 in 사용하여 select를 여러번 반복하지 않도록 하기.

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.