[COGO] Server 개발일지

hwee·2024년 5월 12일
0

COGO개발과정

목록 보기
2/12
post-thumbnail

0513

Postman은 문제없음 : API자체 문제는없다
CORS에러 : 스웨거에서도 cors에러 뜨는상황
preflight문제인데, SecurityConfig에 처리를 해주어도 해결이 안됨 -> Cors에러랑 preflight쪽 공부 필요
securityconfig에서 requestmatcher.permitall이 처리가 안되는 것으로 보임

0515

preflight문제가 맞았고, CORS와 preflight(Options메소드)와 시큐리티 내의 필터체인들에 대하여 공부 및 정리하였다.
이슈는 해결되었으며, 도커를 통한 컨테이너화, CICD파이프라인 구축 작업을 마친 후 리팩토링 작업에 들어가면 된다.
https://velog.io/@ky0_hw/COGO-CORS%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0preflight%EC%99%80-options-%EA%B7%B8%EB%A6%AC%EA%B3%A0-JWT

0516

gitActions와 도커를 통해 CICD 파이프라인을 구축할 예정이다.
인강을 보면서 도커를 공부할 예정인데, https://velog.io/@ky0_hw/series/Docker
에 정리한다.

0520

파이프라인을 구축하고, 이미지가 EC2에 넘어가는 것까지 확인하였으나, 애플리케이션에 문제가 있어 컨테이너가 바로 꺼진다.
application.yml을 깃허브에 올리기 위하여 깃허브 secrets를 사용하던 중 문제가 생겼고, 집의 로컬 환경에 저장되어 있는 yml과 비교하며 다시 수정하면 될 듯하다.
해결 후 API들 성능 개선 작업을 시작할 예정이다.

0521

github의 시크릿 값에 DB_NAME을 잘못 입력한 상황이였고, 수정하니 바로 해결되었다.
이제 로컬에서 즉시로딩 설정해놓았던 엔티티들을 지연로딩으로 바꾸고 프록시문제를 해결하기 위하여 jpql부터 시도해볼 예정이다.
이를 적용할 API는 멘토 리스트를 불러오는 API부터 시작한다.

0522

HTTP Redirect의 한계로 헤더에 access token을 넣어도 클라이언트가 받을 수 없는 이슈 발생

0523

HTTP Redirect시 쿠키에 refresh 토큰을 넣어 보낸뒤, 클라이언트가 reissue 요청을 보내면 응답값의 헤더에 refresh token과 access token, loginStatus를 넣어 반환하는 로직으로 수정한다.

0525

Swagger에서는 정상 작동, 토큰들이 쿠키에 잘 들어있는 것을 확인하였으나, 클라이언트 측에서 reissue 요청을 보내면 302에러 발생

0526

reissue요청시 클라이언트가 loginStatus값에 따라 다음 화면으로 redirect해야 하지만, 302에러와 함께 {백엔드 배포도메인}/login 으로 Get요청이 나가며 타임아웃이 되는 문제 발견

0527

클라이언트가 http 로컬에서 테스트중이기에, https로 전환하여 다시 테스트하기로 하였다.
쿠키를 생성할 때 sameSite처리와 secure처리를 하기 위하여 쿠키발급 로직을 loginSuccessHandler와 reissue의 서비스로직을 수정하였다.

0529

여전히 문제가 해결되지 않았고, 배포 서버 테스트 결과 reissue요청이 제대로 들어가지 않는 것을 확인, 요청에
JWT Filter는 잘 통과하였으나, 서비스로직이 실행되지 않는 것으로 보아 CORS문제인 듯하다.

0530

SecurityConfig에 {백엔드 배포 도메인}을 추가하여 해결

0531

setExposedHeaders에 access토큰과 loginStatus를 추가해야 클라이언트가 헤더에서 꺼내볼 수 있다는 이슈 발견 및 해결

0601

reissue 관련 이슈 정리
https://velog.io/@ky0_hw/COGO-Reissue-sameSite

0602

클라이언트(프론트엔드)가 계속 요청을 보내도 302가 떴던 이유는 서버에 요청을 보낼 때 쿠키값이 안보내지고 있어서임을 발견했다.
쿠키를 생성할 때 samesite=none + secure설정을 하지 않으면 https 환경에서 클라이언트가 해당 쿠키를 들고 요청을 보낼 수 없다.
프론트와 소통할 때 서로 이해하지 못해서 힘든 부분이 있었는데, 방학 때 리액트를 공부해서 프론트의 이해도를 올리는 것이 필요하다.

0620

시험기간동안 자잘한 오류를 해결하였고, 이제 다음 기능 개발 전까지 엔티티의 일대다 연결관계들을 지연로딩으로 수정하고, queryDSL을 사용할 예정이다. queryDSL 공부 필요

0621

queryDSL 공부 시작

0623

프론트 배포 도메인에서 멘토 리스트 불러오는 기능에 버그 발견
->프론트가 http 프로토콜로 API를 호출하고 있었음

0624

커피챗 신청 API 수정(이메일 전송 기능이 빠져있었음)
커피챗 성사시 멘티, 멘토측 모두에게 이메일을 보내야함

0625

인프런 김영한 queryDSL 수강 시작
진행률 20%

0626

김영한 queryDSL 수강 / 진행률 60%
기존 멘토 리스트 불러오기 API 성능 찍어보니 상태가 심각한듯 함
로딩관계 수정이 시급한 상태이다.
++앞으로의 방향성 :
0706까지 기존 MVP 버그 전부 수정 + 엔티티들 지연로딩으로 수정 후 queryDSL로 API 응답속도 개선
이후 멘토들의 정보들은 REDIS에 올릴지 고려 필요
COGO의 방향성은 홍보용 웹 + 실제 서비스 로직은 앱으로 구현

0630

queryDSL 수강 완료
엔티티 로딩관계 수정 시작

0701

액세스 토큰 만료되도 클라이언트에서 재발급요청을 못하고 있는 이유 발생
해결책
1. jwt filter에서 액세스토큰 만료시 401 반환
2. jwt filterdptj 액세스토큰 만료시 자체 reissue 호출
일단 1번 선택

0702

가장 응답속도가 중요한 멘토리스트 불러오는 API를 우선 수정하기로 하였다.
유저와 멘토만 Fetch join하여 쿼리 갯수를 줄이면 되겠지만, 일반Join으로 쿼리 발생 시점에 바로 DTO화하면, 단순 조회 기능이기 때문에 문제가 없을 듯하다.
성능을 비교해보고 선택해야 한다.

0704

https://velog.io/@ky0_hw/COGO-queryDSL%EB%A1%9C-API%EC%84%B1%EB%8A%A5-%EA%B0%9C%EC%84%A0%ED%95%98%EA%B8%B0
일반 Join으로 처리하는 것이 역시 단순 조회 API에선 더 높은 성능을 나타냈다.

0705

커피챗 가능 시간대 가져오기 API 쿼리 수정

0706

커피챗 성사시 possibleDates에서 해당 시간대 숨기기(disable)처리 기능 필요
refresh token repo, 멘토정보 Redis 적용 필요

0707

커피챗 성사시 로직 수정 + 쿼리 수정
https://velog.io/@ky0_hw/COGO-%EC%BB%A4%ED%94%BC%EC%B1%97-%EC%8B%A0%EC%B2%AD-%EB%A1%9C%EC%A7%81-%EC%88%98%EC%A0%95

0708

Redis 공부 시작 : 멘토 정보 관련 API 캐싱, Refresh Token TTL설정이 주요 목표
Flutter 설치 및 환경설정 완료 : Flutter clone으로 클론코딩해보면서 연습해보자. 프론트엔드 이해도를 높이는 것이 주요 목표

0710

JWT만료시 401에러 반환을 하지 않는 오류 해결
https://velog.io/@ky0_hw/COGOJWT-%EB%A7%8C%EB%A3%8C-%EA%B2%80%EC%A6%9D

0711

프로파일러와 VisualVM, 비동기처리와 스레드풀을 통해 커피챗 신청 API 응답속도 30배 개선하기
https://velog.io/@ky0_hw/COGO-%ED%94%84%EB%A1%9C%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80-VisualVM-%EB%B9%84%EB%8F%99%EA%B8%B0%EC%B2%98%EB%A6%AC%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%ED%92%80

0712

Redis 학습 - Refresh token 저장과 동시성 처리

0713

Redis 학습 - Refresh token 저장과 동시성 처리

0715

SMS인증 API(Cool SMS) 연동 완료
테스트 완료, 결제 어떻게 처리할지 고려

0718

Refresh token Redis에 저장하기 (elasticache 사용)
TTL-1일, 용량은 0.5GB(프리티어)

0719

동시성 이슈 : 동시에 커피챗 신청하면 한 시간대에 여러개 생성될 수 있음
처리 필요(Lock구현 고려)

0720

MVP -> 릴리즈1 와이어프레임 나왔으니, ERD재설계, 서비스 로직 전면 수정 필요
커피챗 요청 엔티티 추가 필요 + 전반적인 재설계

0722

동시성 이슈 해결 : 커피챗 요청시 Lock 획득, 트랜잭션 종료시 Lock 반납 후 Active 비활성화

0723

정식 릴리즈1 API설계 및 ERD재구성
Figma
ERD Cloud
API명세서

0809

개인프로젝트용 COGO API 성능 측정 API 생성 시작

0812

개인 웹사이트 기초 프론트작업 완료

0818

https://velog.io/@ky0_hw/%EC%98%A8%ED%94%84%EB%A0%88%EB%AF%B8%EC%8A%A4-%EB%B0%A9%EC%8B%9D%EC%9C%BC%EB%A1%9C-%EA%B0%9C%EC%9D%B8-%EB%85%B8%ED%8A%B8%EB%B6%81%EC%97%90-WAS-%EC%98%AC%EB%A6%AC%EA%B8%B0
개인 노트북에 API측정 WAS 배포 완료

0819

COGO 2차릴리즈 작업 완료, main 브랜치로 이동
API 테스트 완료

0820

Base Response 생성 시작, 반환 양식 통일 작업

0822

반환양식 통일작업 종료
각 에러 enum클래스 생성
클라이언트 회의 및 전달 완료

profile
화이팅!

0개의 댓글