EC2환경에서 환경변수 적용하기(ubuntu)
2024. 3. 28. 00:24
etc
application.yml파일에서 보안이 필요시되는 정보는 다음과같이 환경변수를 이용해서 로컬에 환경변수를 추가해줫다. 배포시에도 이 환경변수를 추가해줘야 한다. EC2인스턴스의 .bashrc 파일에서 환경변수를 추가한다. home의 ububtu로 이동해서 ls -al 명령어를 입력해보면 .bashrc 파일이 있다. 이 파일에 환경변수를 추가할 것 1. /home/ubuntu 경로에서 다음 명령어를 실행한다. nano .bashrc 그럼 다음과 같은 창이 뜬다 2. 맨 아래로 이동하여 export 명령어로 환경변수를 추가한다. export GOOGLE_CLIENT_SECRET=123123123 3. 변경사항 저장 (ctrl X -> Y -> Enter) 4. .bashrc' 파일에서 설정한 환경 변수를..
[ERROR]@Authentication 사용 시 principal is null
2024. 3. 26. 01:43
Error
회원가입 후 유저의 닉네임과, MBTI를 추가로 입력해주는 로직을 만들면서 Access Token으로 유저의 정보를 가져올 필요가 있었기 때문에 Access Token을 헤더에 넣어준 후 다음과 같이 @Authentication으로 유저의 정보를 가져오려고 했었다. @Operation(summary = "엑세스 토큰을 이용해 유저 정보를 업데이트합니다.") @PatchMapping public ResponseEntity signup(@Valid @RequestBody UserUpdateDto updateDto, @AuthenticationPrincipal UserPrincipal principal) { return ResponseEntity.ok(userService.updateUser(updateDto..
백준 11723
2024. 3. 20. 13:06
Algorithm
문제 처음코드 : Hash의 contains 함수가 가장 효율이 좋기에 HashMap의 contains 함수를 이용했고, all 에 대한 HashMap 을 따로 만들어 all 연산 시마다 now에 all 의 값을 할당해 주었다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { HashMap now = new HashMap(); Buffered..
[백준 1654] 이진탐색
2024. 3. 5. 20:20
Algorithm
처음 짯던 코드는 다음과 같다 만들수 있는 최대 랜선의 길이를 max라 하면 모든 랜선의 길이를 더한 다음 k로 나눈 것이 max의 최댓값이라 생각했고 거기서 n보다 크거나 같을 때까지 1씩 빼가며 max의 값을 구해주는 것이다. public class Baek_1654 { public static void main(String[] args) throws IOException { //K개의 랜선을 모두 N개 이상의 같은 길이의 랜선으로 만들기 //만들 수 있는 최대 랜선의 길이를 구해라 //가지고 있는 랜선 갯수 1
Github Actions를 통한 배포 자동화 3
2024. 3. 4. 20:43
etc
멋쟁이 프로젝트때 배포 자동화를 끝내지 못했는데 이번에 새로운 프로젝트를 하면서 배포 자동화를 하게 되었당 이전 방법은 거의 동일하게 진행하여 main 브랜치에 push 시 S3에 빌드된 파일이 올라갈 수 있도록 하였다. 이제 이 빌드파일을 진짜 배포하고 실행해 볼 것이다. 먼저 프로젝트의 루트 경로에 appspec.yml을 작성해주어야 한다. 이 파일은 Code deploy가 수행할 일들을 작성하는 곳이다. 공식 메뉴얼을 참고하여 작성하면 좋을 것 같다. 공식 메뉴얼 AppSpec '후크' 섹션 - AWS CodeDeploy 배포의 시작 DownloadBundle, 설치 BlockTrafficAllowTraffic, 및 종료 이벤트는 스크립팅할 수 없으므로 이 다이어그램에서 회색으로 표시됩니다. 하지만..
Pagination 조회 시의 Query tuning , 그리고 N+1
2023. 9. 13. 22:50
Spring
전체 조회시 속도 개선을 위한 쿼리 최적화를 하기 위해 이전 프로젝트에서 했던 것처럼 fetch join을 도입했다. 현재 프로젝트에는 Pagination이 구현되어 있었고, fetch join을 통해 1:N 연관관계인 테이블들을 조인하려는 시도를 했다. 그러나 이렇게 하면 문제가 발생할 수 있다고 한다. 어떤 문제인지, 그리고 해결법은 무엇일지 알아보았다. 📌쿼리 튜닝시 fetch Join을 쓰는 이유 우리는 보통 일대다 , 다대일 연결시 fetchType을 LAZY, 즉 지연로딩으로 설정한다. 이렇게 되면 한쪽 객체를 조회할 때 연관된 객체는 일단 Proxy 객체로 가져온 후 연관 객체가 실제로 필요할 때 select 쿼리를 따로 날려서 가져온다. 이렇게 하면 굳이 필요 없는 객체의 조회를 막을 수 ..
[ERROR]LazyInitializationException: could not initialize proxy
2023. 9. 3. 16:53
Error
게시글 상세조회 기능을 만들던 중 다음과 같은 에러를 마주했다 ERROR 11064 --- [nio-8080-exec-6] k.....FilterErrorUtils : Request processing failed; nested exception is org.hibernate.LazyInitializationException: could not initialize proxy [파일위치...User#1] - no Session org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.LazyInitializationException: could not initi..
Github Actions를 통한 배포 자동화 2
2023. 8. 1. 18:46
Git
지난 글에서는 깃헙액션, 워크플로우에 대해 설정했다. 이번에는 aws 관련 설정들을 할 것이다. 이전 포스팅에서 다뤘던 것처럼 깃헙액션에서는 s3와 codedeploy, ec2를 이용한다. s3에 파일을 압축해서 올리고 codedeploy를 이용해 ec2에 뿌려주는 것이다. 📌EC2 생성 ec2 인스턴스를 생성해야 한다. 📌S3 생성 생성시 주의할 점은 퍼블릭 설정은 따로 필요 없지만, 버킷 이름은 신경써서 지어주자 📌EC2에 Codedeploy 에이전트 설치 sudo apt update sudo apt install ruby-full sudo apt install wget cd /home/ubuntu wget https://bucket-name.s3.region-identifier.amazonaws.c..
Github Actions를 통한 배포 자동화
2023. 7. 28. 18:05
etc
GitHub Actions는 Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼이다. 레포지토리에서 Pull Request 나 push 같은 이벤트를 트리거로 GitHub 작업 워크플로우(Workflow)를 구성할 수 있다. 📌워크플로우 하나 이상의 작업이 실행되는 자동화 프로세스 각 작업은 자체 가상 머신 또는 컨테이너 내부에서 실행된다. .yml(혹은.yaml) 파일에 의해 구성되며, 테스트, 배포 등 기능에 따라 여러 개의 워크플로우도 만들 수 있다. 생성된 워크플로우는.github/workflows 디렉토리 이하에 위치하게 된다. 📌Github Actions를 통한 배포 Flow 📌Github Actions 설정 파일(.yml)에 따라 Gith..