Skip to content

juni8453/Tanylog

Repository files navigation

📝 Tanylog

💁🏻 프로젝트명 Tanylog API

📆 기간 2023.07.26 ~ 2023.09.07


🌐 배포 프로세스


배포 그림


💁🏻 기능 구현


Back-end

  • 로그인 구현 (포스팅)
    • Spring Security + OAuth2 + Session, Cookie 방식 로그인 구현

  • API 명세서 작성 (포스팅)
    • Spring Rest Docs 를 활용해 API 명세서 작성



  • 게시글 좋아요 API (포스팅)
    • API 호출 시 한 유저가 동시 요청을 보내는 상황 제어할 수 있도록 구현 (포스팅)


nGrinder 를 활용해 API 성능 테스트 실시
  • 커버링 인덱스를 적용해 성능 개선

  • 약 3배의 성능 개선 성공

  • 성능 개선 전 10 분간 성능 테스트

    • 가상 유저 99 명 기준
    • 평균 테스트 시간 20 초
    • 최고 TPS 8
    • 성능 개선 전 엔그라인더
  • 성능 개선 후 10 분간 성능 테스트

    • 가상 유저 99 명 기준
    • 평균 테스트 시간 9.5 초
    • 최고 TPS 14
    • 성능 개선 후 엔 그라인더
  • 성능 개선 전 Postman 기준 속도 측정

    • 응답 시간 약 1.3 초
    • 스크린샷 2023-09-09 오후 3 45 29
  • 성능 개선 후 Postman 기준 속도 측정

    • 응답 시간 약 0.4 초
    • 스크린샷 2023-09-09 오후 3 46 33

⚒ 사용 기술 스택


1. BackEnd
  • Java 11
  • Gradle
  • MySQL 8
  • Spring Boot 2.X
  • Spring Data JPA (Hibernate)
  • Querydsl
  • Spring Security
  • Spring Rest Docs
  • Junit5
2. Devops
  • AWS EC2
  • GitHub Actions
  • Docker
3. Tools
  • IntelliJ
  • Git, GitHub

💡 API 설계


Domain Method Description URI
게시글 POST 게시글 등록 POST /posts
DELETE 게시글 삭제 DELETE /posts/{postId}
PUT 게시글 수정 PUT /posts/{postId}
GET 게시글 단건 조회 GET /posts/{postId}
GET 게시글 전체 조회 GET /posts
GET 전체 조회 페이징 처리 GET /posts?page=?&size=?
GET 전체 조회 검색 처리 GET /posts?searchType=?&keyword=?
GET 전체 조회 페이징 + 검색 GET /posts/?page=?&size=?&searchType=?&keyword=?
GET 내가 작성한 게시글 조회 GET /posts/my_posts
POST 게시글 좋아요 POST /posts/{postId}/like
댓글 POST 댓글 등록 POST /posts/{postId}/comments
POST 대댓글 등록 POST /posts/{postId}/comments/{commentId}/reply
DELETE 댓글 삭제 DELETE /comments/{commentId}
PUT 댓글 수정 PUT /comments{commentId}
GET 댓글 전체 조회 GET /posts/{postId}/comments
GET 대댓글 전체 조회 GET /posts/{postId}/comments/{commentId}

💡 DB ERD


tanylog_erd

About

블로그 API 제작

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published