Project
TIL(57) 토큰 검증 시 발생하는 예외 처리
Facts ✅ 만료된 토큰 처리 Findings 문제점 현재 서버에서 토큰이 만료된 경우 IntelliJ 터미널 창에 예외 처리가, 프론트단에서는 Console에 401 오류가 뜨고 있다. 문제점은 401 오류가 로그인 정보가 없거나, 올바르지 않은 로그인 정보를 가진 경우에도 똑같이 401 오류로 다뤄지고 있다. 그래서 401 오류에 대한 응답을 받더라도 프론트 입장에서는 권한이 없음 정도만 알 수 있지만, JWT 토큰이 잘못 된 것인지, 사용자의 인증을 위한 정보를 잘못 입력한건지, JWT 토큰이 만료된 것인지에 대한 자세한 정보를 알 수 없었다. 토큰이 만료됐으면, LocalStorage에 토큰을 삭제하고, 로그인 페이지로 이동시켜 사용자에게 토큰이 만료되었다고 알려주고 싶은데 이런 처리를 할 수 ..
TIL(56) 회원가입 중복 아이디 예외처리 추가, 알고리즘 문제 해결 스터디 시작
Facts ✅ 단어변환 문제 풀기 ✅ 올바른 괄호 문자열 만들기 문제 풀기 ✅ 구명보트 문제 풀기 ✅ 회원가입 중복 아이디 예외처리 추가하기 ✅ 회원가입 ID와 PW 정규화 체크하는 기능 추가하기
TIL(55) AWS RDS 연동하면서 발생한 에러 고치기
Facts ✅ Product Server에 RDS 연결하기 Findings 👻 첫번째 error - dbname 문제점 EB로 생성한 RDS가 Spring Boot와 연결이 되지 않았다. 문제 원인 RDS URI를 분명히 잘 설정해주었는데 연결이 안 되었다. 엔드포인트, 포트, 잘 설정해주었는데 그러면, DB name을 잘못 설정했나 생각이 들었다. 구글링하여 aws 공식문서를 보니, RDS의 DB name을 잘못 설정해 준 것이 맞았다. DB name을 DB 식별자로 설정해주는 줄 알았지만, EB로 생성한 RDS는 DB name은 ebdb였다. 해결 DB name을 DB 식별자에서 ebdb로 변경 👻 두번째 error - test build error 문제점 RDS 연결을 해주면서, test 부분에서 ..
TIL(54) GithubAction + ElasticBeanstalk + Docker + AWS ECR로 CI/CD 하면서 발생한 에러 고치기
Facts ✅ GithubAction + ElasticBeanstalk + Docker + AWS ECR로 무중단 배포 Findings 도커를 활용한 무중단 배포는 산 넘어 산이었다. 에러 하나 고치면, 또다른 에러가 나왔다. 도커를 활용한 무중단 배포를 하면서 여러 에러들을 디버깅했다. 👻 1. Missing region in config Error 문제 원인 Amazon ECR에 로그인을 해주려면, AWS 사용자 access key 필요한데, 이를 추가해주지 않았다. 해결 AWS 사용자 access key 추가 👻 2. Push Image Error 문제 원인 Image가 Elastic Container Registry에 Push 되지 않았다. Registry를 Public으로 설정하면 Registr..
TIL(53) JPA 연관관계 에러 고치기
Facts ✅ 회원 탈퇴 기능 ✅ 연관 관계 bug fix ✅ Til Delete 기능 bug fix ✅ Comment Delete 기능 bug fix Findings 👻 첫번째 Error : Til Delete 기능 좋아요가 추가된 TIL의 경우 TIL 삭제가 되지 않았다. 문제 원인 연관관계가 있으면, 상위 엔티티가 삭제될 경우, 하위 엔티티도 삭제처리를 해주어야 했다. 해결 이처럼 여러 entity가 연관관계로 엮어있을 때 삭제를 구현하려면, 여러가지 방법이 있다. 그중 대표적인 것이 casecade 옵션을 주는 것이다. cascade.REMOVE를 사용하여, 상위 엔티티(TIL)가 삭제될 때마다 하위 엔티티(Like)도 삭제되게 처리해주었다. casecade.REMOVE는 상위 엔티티에 삭제 요청..
TIL(52) Elasticbeanstalk에 HTTPS를 연결
Facts ✅ Product 서버에 ssh 인증서를 통한 Https 연결 Findings HTTP HTTP는 World Wide Web에서 하이퍼텍스트 문서를 교환하기 위하여 사용되는 통신규약이다. HTTP 프로토콜은 다음과 같은 특징을 갖는다. 비연결 지향한다. (Connectionless) 클라이언트가 request를 서버에 보내고, 서버가 클라이언트에 요청에 맞는 response를 보내면 바로 연결을 끊는다. 상태정보 유지를 하지 않는다. (Stateless) 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다. HTTPS HTTP는 따로 암호화 과정을 거치지 않기 때문에 중간에 패킷을 가로챌 수 있고, 수정할 수 있다. 따라서 보안이 취약하다. 이를 보완하기 위해 나온..
TIL(51) JPA 관련 에러 고치기
Facts ✅ til repository 수정 ✅ til_search 기능 부분 bug fix Findings 🤔 1차 Error 문제점 처음 JpaRepository에서 쿼리를 요청했을 때, 데이터를 가져와주지 않고 에러가 났다. 🥲 문제 원인 원인을 찾아본 결과, findBy{Column명}을 해줄 때, 기본적으로 column명은 _가 없어야 한다. 해결 그러므로, Entity에 있는 테이블의 컬럼명들을 다 snake case에서 cammel case로 변경해주었다. 위의 방법 외에도 해결방법이 없는지 구글링한 결과, hibernate 설정 파일에서 CamelCase → SnakeCase 변환을 위해선 별도로 설정을 해야 한다는 것을 알게 되었다. 🤔 2차 Error 문제점 TilView가 True이..
TIL(50) S3를 이용한 사진 업로드 기능 속도 개선하기
Facts ✅ S3를 이용한 사진 업로드 기능 속도 개선 Findings 문제점 프로젝트를 Flask/Python → Spring/Java로 바꿔주면서, S3와 CloudFront를 이용한 사진 업로드 API 호출 속도가 느려졌다. 🐢 💦 문제 원인 문제의 원인을 파악해보자. S3 이미지 업로드 기능을 위한 Python의 라이브러리는 Boto3를 사용해주었다. Spring으로 바꾸면서, S3 이미지 업로드 기능을 위한 Java의 라이브러리는 amazonS3.putObject()가 있어 이것으로 변경해주었다. 🤔 둘의 라이브러리의 속도 차이가 왜 날까? 멀티 스레딩 기술의 유무 차이로 추측이 되는데, 둘의 라이브러리의 내부 원리를 찾아보자. 1️⃣ Python의 Boto3 Boto3의 공식문서를 보면, S..
TDP Final Starting Assignment (21.12.13 ~ 21.12.31)
To Do [x] 고객의 피드백을 받아 기능 개선하기, 프론트엔드 수정하기 [x] 배포 확장 [x] 모니터링 시스템 만들어, product 서버의 에러를 바로 확인할 수 있게 만들기 [x] 예외처리하기 마지막 프로젝트는 고객에게 피드백 받아 기능 개선도 해보고, 테스트도 해보기로 했다. 그리고, 컨테이너 기술을 배워보고 싶어서, 팀원 모두가 같이 도커를 배워보고, Docker 환경의 EB + Docker + AWS ECR + GithubAction으로 무중단 배포도 해보기로 했다. 그리고 기능이 어느정도 구현되어 있어서, 자유롭게 이슈 할당해서 해보고 싶은 기능을 추가하기로 했다.
TDP 3차 회고록 (2021.12.10)
🚧 Keep 1. 개인 면담 1:1 피드백으로 유지할 것과 개선 방향을 깊게 나눌 수 있었어요 ❗ 2. Notion 에 버그 리포팅 버그 리포팅을 통해 내가 찾지 못한 오류를 팀원들이 발견하고 수정할 수 있어요 ❗ 3. Git의 다양한 기능을 사용하여, 프로젝트의 진행사항을 확인 위키, issue, milestone, pull request 등 다양한 기능 사용하여 기록을 남겼어요 ❗ 4. 백엔드 기능에 집중 팀원 모두가 백엔드 기능에 참여하여 각자 배울 점이 많았어요 ❗ 5. 연속적인 자동 배포 연속적인 자동 배포가 되게 하여, 서버의 상태와 기능에 대한 확인을 쉽게 할 수 있었어요 ❗ 6. 보안 강화 설정값 처리, 방화벽, SSL 인증서 등 여러 요소들을 적용하여, 보안을 강화시켰어요 ❗ 🤔 Prob..