Project/TIL, WIL

    TIL(57) 토큰 검증 시 발생하는 예외 처리

    TIL(57) 토큰 검증 시 발생하는 예외 처리

    Facts ✅ 만료된 토큰 처리 Findings 문제점 현재 서버에서 토큰이 만료된 경우 IntelliJ 터미널 창에 예외 처리가, 프론트단에서는 Console에 401 오류가 뜨고 있다. 문제점은 401 오류가 로그인 정보가 없거나, 올바르지 않은 로그인 정보를 가진 경우에도 똑같이 401 오류로 다뤄지고 있다. 그래서 401 오류에 대한 응답을 받더라도 프론트 입장에서는 권한이 없음 정도만 알 수 있지만, JWT 토큰이 잘못 된 것인지, 사용자의 인증을 위한 정보를 잘못 입력한건지, JWT 토큰이 만료된 것인지에 대한 자세한 정보를 알 수 없었다. 토큰이 만료됐으면, LocalStorage에 토큰을 삭제하고, 로그인 페이지로 이동시켜 사용자에게 토큰이 만료되었다고 알려주고 싶은데 이런 처리를 할 수 ..

    TIL(56)  회원가입 중복 아이디 예외처리 추가, 알고리즘 문제 해결 스터디 시작

    TIL(56) 회원가입 중복 아이디 예외처리 추가, 알고리즘 문제 해결 스터디 시작

    Facts ✅ 단어변환 문제 풀기 ✅ 올바른 괄호 문자열 만들기 문제 풀기 ✅ 구명보트 문제 풀기 ✅ 회원가입 중복 아이디 예외처리 추가하기 ✅ 회원가입 ID와 PW 정규화 체크하는 기능 추가하기

    TIL(55) AWS RDS 연동하면서 발생한 에러 고치기

    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 하면서 발생한 에러 고치기

    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 연관관계 에러 고치기

    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를 연결

    TIL(52) Elasticbeanstalk에 HTTPS를 연결

    Facts ✅ Product 서버에 ssh 인증서를 통한 Https 연결 Findings HTTP HTTP는 World Wide Web에서 하이퍼텍스트 문서를 교환하기 위하여 사용되는 통신규약이다. HTTP 프로토콜은 다음과 같은 특징을 갖는다. 비연결 지향한다. (Connectionless) 클라이언트가 request를 서버에 보내고, 서버가 클라이언트에 요청에 맞는 response를 보내면 바로 연결을 끊는다. 상태정보 유지를 하지 않는다. (Stateless) 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다. HTTPS HTTP는 따로 암호화 과정을 거치지 않기 때문에 중간에 패킷을 가로챌 수 있고, 수정할 수 있다. 따라서 보안이 취약하다. 이를 보완하기 위해 나온..

    TIL(51) JPA 관련 에러 고치기

    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를 이용한 사진 업로드 기능 속도 개선하기

    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..

    TIL(49) 21-12-09: CORS 에러 해결하기

    TIL(49) 21-12-09: CORS 에러 해결하기

    Facts ✅ 프론트엔드 아키텍처와 백엔드 아키텍처 연결 ✅ CORS 에러 fix ✅ API 통신 확인 Findings SOP (Same Origin Policy) Same Origin Policy의 약자로, 웹 브라우저의 브라우저 보안을 위해 Same-Origin(프로토콜, 호스트, 포트가 같은) 서버로만 리소스를 주고 받을 수 있도록 하는 정책이다. 왜 다른 출처의 리소스를 사용하는 것을 제한할까? SOP를 이용해 악의적인 리소스를 분리해서 공격의 경로를 줄일 수 있기 위함이다. 하지만, 클라이언트와 서버를 분리하여 개발하는 경우가 많기에, 다른 도메인간에 API 통신을 허용을 위해서 CORS가 등장했다. CORS (Cross Origin Resource Sharing) CORS는 Cross-Orig..

    TIL(48) 21-12-08: API 문서 자동화와 테스트 코드 작성하기 (Using RestDoc)

    TIL(48) 21-12-08: API 문서 자동화와 테스트 코드 작성하기 (Using RestDoc)

    Facts ✅ 테스트 코드 작성 Using mockMvc - 로그인, 회원가입 ✅ API 문서 자동화 Using RestDoc Findings mockMvc를 사용하여 테스트 코드를 작성하면, 포스트맨을 사용할 필요가 없다. 포스트 맨에서 테스트 하는 것을 mockMvc로 수행하는 것이다. 여기서 테스트를 해보고 테스트 케이스를 만들 수도 있고 RestDoc까지 추가로 사용하면, 테스트를 통해, API 문서화를 할 수 있다. mockMvc를 사용하여, 회원가입과 로그인 부분을 테스트를 했다. mockMvc를 사용하여 통합 테스트하고, RestDoc 설정까지 추가하여 API 문서 자동화할 수 있게 해주었다. @ExtendWith({RestDocumentationExtension.class, SpringEx..