분류 전체보기
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..
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)
Facts ✅ 테스트 코드 작성 Using mockMvc - 로그인, 회원가입 ✅ API 문서 자동화 Using RestDoc Findings mockMvc를 사용하여 테스트 코드를 작성하면, 포스트맨을 사용할 필요가 없다. 포스트 맨에서 테스트 하는 것을 mockMvc로 수행하는 것이다. 여기서 테스트를 해보고 테스트 케이스를 만들 수도 있고 RestDoc까지 추가로 사용하면, 테스트를 통해, API 문서화를 할 수 있다. mockMvc를 사용하여, 회원가입과 로그인 부분을 테스트를 했다. mockMvc를 사용하여 통합 테스트하고, RestDoc 설정까지 추가하여 API 문서 자동화할 수 있게 해주었다. @ExtendWith({RestDocumentationExtension.class, SpringEx..
TIL(47) 21-12-07: ElasticBeanstalk으로 백엔드 아키텍처 구성하고 GithubAction으로 프로젝트 배포
Facts ✅ 백엔드 인프라 Elasticbeanstalk를 사용하여, ELB + AutoScaling + EC2 구축 ✅ Github Action으로 프로젝트 배포 Feelings EB Elasticbeanstalk로 EC2와 ELB와 환경변수 값을 한번에 관리해 주었다. 따로 관리했을 때는 설정값도 많고 어려웠는데, 통합해서 관리함으로써, 간단한 옵션만 조절하고, 어플리케이션만 배포하면 되어서 매우 편리했다. GithubAction으로 자동 배포 GithubAction으로 Source를 Push 하자마자 자동으로 서버 배포를 반영할 수 있게 해주었다. 기존에는 서버에 배포하려면 파일을 고칠 때마다, 서버를 멈춰주고 파일을 수정해서 서버에 올려주고 다시 서버 돌리는 작업을 해서 번거로웠다. 그런데, G..
TIL(46) 21-12-06: S3와 CloudFront로 프론트엔드 인프라 구성하기
Facts ✅ 프론트엔드 인프라 s3 + cloudfront로 구성 ✅ SSL 인증서 설정 Using Certificate Manager ✅ 웹방화벽 Using AWS WAF