[Kafka] Kafka의 기본 개념과 구성 요소 전체 구조 흐름 Producer API 서버 / 이벤트 생성 → Topic: concert-reservation Partition 0 offset 0~ Partition 1 offset 0~ Partition 2 offset 0~ → Consumer Group Consumer 0 Consumer 1 Consumer 2 이벤트는 들어온 순서대로 적재된다. 메시지.. Kafka 2026.03.28
[Redis] Redis + RedisInsight 1. 개념Redis: 메모리 기반 초고속 데이터 저장소RedisInsight: Redis의 시각화(GUI) 도구 2. 도커 설치 방법Docker hub 공식 문서 - How to use this image 활용 (이미지가 없어도 다운로드 후 자동 실행) 3. Redis Insight를 Redis에 연결하기1) localhost:5540 접속 및 약관 동의2) Add database - Connection Settings에서 다음과 같이 설정 (Host 입력 란 주의)3) 연결 실패 시, Docker Desktop에서 redis 컨테이너가 6379 포트에서 잘 실행되고 있는지 확인포트에 6379:6379가 표시되어 있지 않은 경우, 컨테이너 삭제 후 터미널에서 수동 실행docker run -it -d --.. Redis 2026.03.27
[AWS] (3부) Auto-Scaling 테스트, 도메인 부여, HTTPS 적용 1. Scale-Out 실습ec2 접속 후, cpu 사용량을 100%로 늘리는 명령어 실행yes > /dev/null &이후 실제 부하 확인top -bn1 | head -5결과 해석cpu 사용률 = 사용자 6.7% + 시스템 43.3% = 50.0% (6.7 us, 43.3 sy)시간별 평균 부하 (1분/5분/15분): 0.98, 0.45, 0.20메모리 사용량- 총량 1846.6MB (t4g.small 또는 t3.small 수준)- 사용 중 706MB- OS가 캐시로 활용 중인 메모리 1047MBAuto Scaling Group에서 확인 - ec2 인스턴스가 2개가 됨 2. Scale-In 실습ec2 콘솔에서 다음 명령어 입력kill %1결과(단, scale-in은 수십 분 걸릴 수 있음)scale-.. 카테고리 없음 2026.03.19
[Github] Runner 서버에 Docker를 설치해야 할까? 요약Github Actions의 hosted runner(예: ubuntu-latest)에는 Docker가 기본적으로 설치되어 있다. 따라서 services 블록에 이미지를 명시하면 Github Actions가 내부적으로 Docker를 사용해 컨테이너를 자동으로 띄워준다.jobs: test: runs-on: ubuntu-latest # 여기에 Docker가 이미 포함되어 있음 services: redis: image: redis:7 # GitHub Actions가 알아서 docker pull → docker run ports: - 6379:6379 options: >- --health-cmd "red.. Projects/[Spring] Ticketing App Project 2026.03.16
[알고리즘] 가장 가까운 같은 글자 찾기: HashMap으로 이중 루프 예방하기 문제 본문문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다.n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다.a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 .. Algorithm 2026.03.06
[Spring Plus] JPQL을 Querydsl로 변환하기 목표JPQL로 작성된 아래 메서드의 쿼리문을 Querydsl로 변환하자. 상황1. Todo 조회 시 연관된 엔티티인 user를 left join으로 가져옴: N+1 문제 발생 가능2. Querydsl 관련 종속성 및 QuerydslConfig 없음: 추가 필요3. 연관 객체로 가져오는 user의 데이터 중에서 일부만 사용하여 dto로 재가공: db에서 조회할 때부터 dto projection 적용 해결 방법1. build.gradle에 종속성 추가 2. QuerydslConfig.java 파일 추가 3. TodoCustomRepository.java 및 Querydsl 적용할 db 조회 메서드 생성 4. 3의 구현체인 TodoCustomRepositoryImpl 및 Querydsl 쿼리문 작성 5. .. Projects/[Spring] Code Refactoring Project 2026.03.04
[Spring Plus] JPA Cascade 옵션 지정하기 상황할 일을 새로 저장할 시, 할 일을 생성한 유저는 담당자로 자동 등록되어야 합니다.JPA의 cascade 기능을 활용해 할 일을 생성한 유저가 담당자로 등록될 수 있게 해주세요.해결 방법하나의 할일은 여러 담당자를 가진다(리스트 형태). 따라서 할일이 생성될 때 할일을 생성한 사용자는 managers라는 list에 add 되어야 한다. 할 일이 생성될 때만 유저를 담당자 리스트에 넣어주면 되므로, @OneToMany의 Cascade 옵션을 Cascade = Cascade.PERSIST로 지정해주자. 속성 값설명Cascade.ALL모든 변경(저장, 병합, 삭제, 재로딩)이 관련 엔티티에 적용됩니다. Cascade.DETACH엔티티가 detach 상태로 변경될 때, 관련 엔티티도 함께 변경됩니다. Ca.. Projects/[Spring] Code Refactoring Project 2026.02.28
[Spring Plus] AOP의 동작 흐름 제어하기 상황AOP가 잘못 동작하고 있어요!UserAdminController 클래스의 changeUserRole() 메소드가 실행 전 동작해야해요.AdminAccessLoggingAspect 클래스에 있는 AOP가 개발 의도에 맞도록 코드를 수정해주세요. 원인 분석1. AOP 기능을 구현하기 위한 의존성이 있는지 확인한다.없으면 추가해 준다. 2. AOP 어노테이션이 After로 설정되어 있어 changeUserRole 메서드가 UserController.getUser()이라는 JoinPoint의 실행 전이 아니라 실행 후 동작한다.해결 방법해당 Aspect의 @After 어노테이션을 @Before 어노테이션으로 바꿔준다. 잘 적용되었는지 확인해 보자.UserController.getUser() 메서드를 호출하.. Projects/[Spring] Code Refactoring Project 2026.02.28
[Spring Plus] 컨트롤러 테스트 성공시키기 상황테스트 패키지 org.example.expert.domain.todo.controller의 todo_단건_조회_시_todo가_존재하지_않아_예외가_발생한다() 테스트가 실패하고 있다. 원인 분석then 절에 Breaking Point를 다 찍어보자.MockMvc란 스프링 프레임워크에서 제공하는 웹 애플리케이션 테스트용 라이브러리를 의미한다. 웹 애플리케이션의 다양한 컴포넌트를 테스트하기 위해 사용한다.(출처: https://adjh54.tistory.com/347).andExpect(status().isOk()) 부분에서 에러가 터졌다. 테스트 코드에서는 200을 예상했지만 실제로는 400이 확인됐다. 존재하지 않는 데이터를 잘못 호출한 사용자발 에러이므로 400대 에러가 발생하는 게 정상인데, 이 .. Projects/[Spring] Code Refactoring Project 2026.02.28
[Spring Plus] JPQL로 쿼리 옵션 추가하기 문제 요약 기획자의 긴급 요청이 왔어요! 아래의 요구사항에 맞춰 기획 요건에 대응할 수 있는 코드를 작성해주세요. 할 일 검색 시 weather 조건으로도 검색할 수 있어야해요.weather 조건은 있을 수도 있고, 없을 수도 있어요!할 일 검색 시 수정일 기준으로 기간 검색이 가능해야해요.기간의 시작과 끝 조건은 있을 수도 있고, 없을 수도 있어요!JPQL을 사용하고, 쿼리 메소드명은 자유롭게 지정하되 너무 길지 않게 해주세요. 문제 접근weather, 수정일 모두 선택 사항이므로 @RequestParam(required = false) 옵션으로 Service에 전달해야겠다. HTTP 요청의 쿼리 파라미터는 전부 문자열이므로, String 타입으로 전달한 뒤 LocalDateTime 형식으로 변환해줘야.. Projects/[Spring] Code Refactoring Project 2026.02.27