작업 환경이 데스크탑에서 노트북으로 바뀌었다. 기존에 진행하던 작업을 이어가기 위해 임시 커밋을 만들어 원격 저장소에 푸시를 했다. 이후 노트북에서 푸시된 브랜치를 받아 작업을 이어갔지만, 임시 커밋은 더 이상 필요하지 않았다. 그래서 커밋 내역만 깔끔하게 제거하고 변경 사항은 유지하는 방법을 사용했다. 1. 임시 커밋 후 푸시 기존 작업을 잃지 않기 위해 모든 변경 사항을 임시로 커밋하고, 원격 저장소에 푸시를 했다. git add .git commit -m "temp: 임시 커밋"git push origin [브랜치명] 2. 다른 컴퓨터에서 브랜치 가져오기 노트북으로 작업 환경을 전환한 뒤, 푸시한 브랜치를 가져왔다. git pull origin [브랜치명] 이 과정을 통해 데스크탑에서 하던 작업..
전체 글
공부한 것 기록합니다와~~ ㅋㅋㅋ 오랜만에 코딩테스트 문제를 풀었다역시 .. 꾸준히 하는 게 젤 중요한데 난 그걸 못해서 문제얌 ㅋ다시 1일 1 코테 시작함니다 n, m = map(int, input().strip().split(' '))for i in range(m): for j in range(n): print("*", end = "") print() 미련하게 풀기!
프로젝트를 진행하면서 우리는 MSA 아키텍처 기반의 프로젝트이므로 다른 모듈에서 DTO를 참조할 수 있도록 각 서비스마다 DTO 모듈을 따로 만들어서 참조하도록 하였다. 그런데 order 서비스의 server 모듈과 dto 모듈에서 서로를 참조하게 되었는데, 오류가 났다! `순환 종속성` 때문에 난 오류였다. 이를 해결하기 위해 서로에 대한 의존성을 제거해야 했다. 서로를 참조하게 된 이유는, 이런 식으로 dto 모듈에 있는 DTO들을 Order 객체를 받아서 만들기 위해 참조한 것이었다. public static NotificationOrderDto from(Order order, String displayProductName) { return new NotificationOrderDto(ord..
내가 구현하고자 하는 알림의 종류에는 품절 상품 재입고 알림, 주문 및 배송 알림, 이벤트 알림이 있다. 품절 상품 재입고 알림"OOO" 상품이 재입고 되었습니다. 근데 재입고나 이벤트 알림은 선착순 접근이 중요하기에 실시간 알림 요청이 필요하다! 따라서 Short Polling, Long Polling 방법 대신 서버에서 변경이 발생할 때마다 데이터를 전송받는 SSE 방식을 적용하고자 하였다.이 방식은 Long Polling 방식보다 효율적이고 새로운 라이브러리 추가나 프로토콜 학습 없이 바로 적용할 수 있다는 점에서 메리트가 있었다. https://tecoble.techcourse.co.kr/post/2022-10-11-server-sent-events/ Spring에서 Server-Sent-Ev..
배포 흐름도 코드 작성개발자가 로컬에서 애플리케이션 코드 작성 및 수정코드 푸시코드를 GitHub 리포지토리의 특정 브랜치에 푸시GitHub Actions 트리거코드 푸시 시 GitHub Actions가 자동으로 트리거됨CI/CD 파이프라인 실행 (GitHub Actions)빌드 단계애플리케이션 빌드자코코 테스트 커버리지 측정자코코를 사용하여 테스트 코드의 커버리지 측정커버리지 리포트를 생성하여 품질 확인테스트 실행빌드 아티팩트 생성Docker 이미지 빌드Dockerfile을 사용해 애플리케이션의 Docker 이미지 생성ECR에 Docker 이미지 푸시 (도커 허브 개념)빌드된 Docker 이미지를 AWS Elastic Container Registry (ECR)로 푸시ECS에 배포 - 컨테이너 관리, ..
이번에 MSA 프로젝트를 진행하면서 각 서비스끼리 `FeignClient`를 통해 호출하는 경우가 많았다. 그 중 배송담당자 CRUD 기능을 구현하는 과정에서 FeignClient의 N+1 호출 문제가 발생하게 되었다. 이를 해결한 방법을 기록해보려고 한다. 1. 배송담당자 전체 조회 기능 구현마스터 관리자는 배송담당자 목록을 전체 조회할 수 있어야 했다.1.1 배송담당자 도메인 설계배송담당자는 특정 허브에 속할 수 있기 때문에, 배송담당자와 허브는 `다대일 관계`로 설계했다. 하지만 MSA 아키텍처를 사용하므로, 객체 자체로 연관관계를 매핑하는 대신 `간접 참조`를 사용해 Hub ID만 Shipper 도메인에 넣어주었다.@Getter@Entity@Table(name = "p_shipper")@NoArg..
이번에 두 번째 프로젝트인 AI B2B 프로젝트를 진행하면서, Gateway에서 사용자 인증 및 인가 처리를 구현하게 되었다. 나는 기존에 회원가입과 로그인을 구현할 때 사용하던 방식을 그대로 적용하기로 했다. 1.1 각 MSA 서비스로 사용자 인증 정보가 전달되지 않는 문제그래서 Gateway에서 JWT 토큰을 헤더에서 추출한 뒤, 이를 검증하고 사용자 정보를 `SecurityContextHolder`에 저장하는 방식으로 접근했다. 처음에는 이 방법이 잘 작동할 것이라고 생각했지만, MSA 아키텍처 환경에서 문제가 발생했다. 각 서비스 간에 사용자 정보가 공유되지 않는 상황이 발생한 것이다.일일이 로그를 통해 하나씩 확인해 본 결과, Gateway에서 `SecurityContextHolder`에 저장..
📌 문제 탐색하기N * N RGB 그림적록색약인 사람 / 아닌 사람이 보는 구역의 개수 출력하기적록색약이 아닌 사람은 빨강 - 초록 같은 색으로 여김 RG / B 섬의 개수랑 비슷한 문제인 것 같다!bfs 로 영역 방문하면서 풀면 될 듯 100 * 100 = 10000 번 * 8 (?) 이거 맞나 ㅋㅋ 📌 코드 설계하기1. N 입력 받기2. 그림 입력 받기3. visited 배열 2개 정의4. 색약이 아닌 사람 구역 개수 구해서 출력5. 색약인 사람 구역 개수 구해서 출력 (R or G 일 때 영역 없애가기) 📌 시도 회차 수정 사항 (Optional) 1회차상하좌우대각선 포함인 줄 알고 dx, dy를 8까지 만들어서 틀림2회차`while`문 안에서 nx, ny를 별도로 지정하지 않고 x, y 그대..