목록2025/07 (8)
코디잉
🧐 9주차 과제 Kafka 도입: 결제 성공 후 처리 로직을 Kafka 메시지 기반으로 비동기 처리하도록 개선 🙋♀️ 고민했던 부분 기존 ApplicationEvent → Kafka 기반 구조로 리팩토링 ◾ 기존에는 @TransactionalEventListener(phase = AFTER_COMMIT) 기반으로 비동기 이벤트를 처리했음 ◾ Kafka를 도입하여, 이벤트들을 Kafka 메시지로 발행하고 별도 Consumer에서 처리하도록 구조 변경 ◽ 발행: ReservationService.pay() 성공 시 PaymentSuccessMessage Kafka로 전송 ◽ 소비: PaymentSuccessKafkaConsumer.consume()에서 메시지 수신 후 랭킹/토큰/내역 순..

📘 책: 『혼자 공부하는 컴퓨터 구조+운영체제』🗓️ 기간: 3주차📍 범위: Chapter 06 ~ Chapter 08💾 Chapter 06 | 메모리와 캐시 메모리 6-1. RAM의 특징과 종류✅ RAM (Random Access Memory)실행할 프로그램의 명령어와 데이터가 저장되는 메모리휘발성: 전원이 꺼지면 데이터가 사라짐비휘발성 메모리 예시: 하드디스크, SSD, CD-ROM, USB 등RAM 용량이 클수록 더 많은 프로그램을 동시에 빠르게 실행하는데 유리📚 RAM의 종류종류설명특징DRAM (Dynamic RAM)일반적인 RAM- 주기적으로 새로 저장 필요- 소비전력이 비교적 낮고, 저렴- 집적도 높아서 대용량으로 설계하기 용이SRAM (Static RAM)캐시 메모리에 사용- 시간..
🧐 8주차 과제 1. Application Event: 이벤트를 활용하여 트랜잭션과 관심사를 분리하기 2. Asynchronous Design: 대기열 기능에 대해 Redis 기반의 설계를 진행 3. feedback - RedisReservationRankingManager 상수값 외부 설정으로 빼기 4. feedback - redis 분산락 TTL 충분히 길게 줘서 중복실행 확률 낮추기 🙋♀️ 고민했던 부분① Event 활용하여 트랜잭션과 관심사 분리◾ 기존에는 모든 로직이 ReservationService.pay() 내에 포함되어 있어, 핵심로직과 부가로직이 혼재된 구조였다. ◽ 핵심 로직: 대기열 토큰 검증, 포인트 사용, 좌석 상태 변경 ◽ 부가 로직: 예매율 랭킹 갱신..
📘 책: 『혼자 공부하는 컴퓨터 구조+운영체제』🗓️ 기간: 2주차📍 범위: Chapter 05 🚀 Chapter 04 | CPU 성능 향상 기법✅ CPU 성능을 높이는 방법클럭 속도 ⬆️코어 수 ⬆️ 스레드 수 ⬆️ 🕐 클럭(Clock)CPU 내부에서 작동 타이밍을 맞춰주는 전기 신호클럭 속도 ↑ → 명령어 사이클 반복 속도 ↑ → 연산 속도 ↑하지만, 발열 등의 문제로 인해 무작정 높이기엔 한계가 존재🧩 코어(Core)명령어를 실행하는 부품하나의 CPU 안에 여러 개의 코어가 탑재된 경우 → 멀티코어 CPU코어 수가 많다고 무조건 성능이 오르지는 않음!각 코어에 연산 작업이 잘 분배되는게 중요하다.🧵 스레드(Thread)하드웨어 스레드하나의 코어가 동시에 처리하는 명령어 단위하나의 코어..
📘 책: 『혼자 공부하는 컴퓨터 구조+운영체제』🗓️ 기간: 2주차📍 범위: Chapter 04 🔍 Chapter 04 | CPU의 작동 원리4-1) ALU와 제어장치🧮 CPU의 주요 구성 요소ALU (산술논리연산장치): 계산 담당레지스터: CPU 내부의 임시 저장 공간제어장치: 명령어를 해석하고 제어 신호를 보냄🔧 ALU (연산 장치)레지스터로부터 피연산자, 제어장치로부터 제어신호를 전달받음산술/논리 연산 수행 후 결과 + 플래그를 출력결과는 레지스터에, 플래그는 플래그 레지스터에 저장플래그 종류: 부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그 등📡 제어장치명령어 해석 및 제어 신호 생성컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기적 신호CPU 제조사..
📘 책: 『혼자 공부하는 컴퓨터 구조+운영체제』🗓️ 기간: 1주차📍 범위: Chapter 01 ~ Chapter 03 🧠 Chapter 01 | 컴퓨터 구조 시작하기 ✅ 컴퓨터란?명령어를 처리하는 기계컴퓨터 구조는 크게 2가지로 구성됨컴퓨터가 이해하는 정보: 데이터, 명령어컴퓨터의 4대 핵심 부품:CPU (중앙처리장치)메모리 (주기억장치)보조기억장치입출력장치🔧 CPU컴퓨터의 두뇌 역할명령어를 읽고 → 해석하고 → 실행주요 구성 요소ALU (산술논리연산장치)레지스터제어장치💾 메모리 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다.휘발성: 전원 꺼지면 데이터 사라짐가격 ↑, 저장용량 ↓🗃️ 보조기억장치비휘발성 저장장치전원이 꺼져..
🧐 7주차 과제 1. Ranking Design - (인기도) 빠른 매진 랭킹을 Redis 기반으로 개발하고 설계 및 구현 2. Asynchronous Design - 대기열 기능에 대해 Redis 기반의 설계🙋♀️ 고민했던 부분◾ 처음엔 5분 주기 배치로 DB를 조회해 Redis에 예매율을 갱신하는 스케줄러 방식을 고려했다. ◽ 이유: Redis를 활용하더라도 DB에 자주 접근하지 않도록 하기 위해 ◾ 하지만 스케줄러 방식으로 했을 경우 아래와 같은 단점이 있을 것 같았다. ◽ 실시간성이 떨어지고, 실제 예매 완료 시점과 랭킹 반영 시점 간의 지연 발생 ◽ 불필요한 콘서트 전체 조회 쿼리가 주기적으로 발생하여 DB 부하 가능성 ◽ 예매 취소나 상태 변경이 스케..
🧐 6주차 과제 1. Distributed Lock - Redis 기반의 분산락 구현해보기2. Distributed Lock - 주문, 결제 등에 적절한 키와 범위를 선정해 분산락 적용하고, 통합테스트 작성하기3. Cache - Cache 전략 취할 수 있는 구간 점검하고 적절한 전략 선정하기4. Cache - Redis 기반의 캐싱 전략 적용하기✅ Keep (잘한 점 / 유지할 점)- 콘서트별로 토큰을 관리하려던 구조를 전환하여 전체 예약서비스 접근 제어용 대기열 구조로 단순화 - 허용된 대기열 토큰의 유효시간을 고려한 스케줄러를 도입하여 유효하지 않은 토큰 자동 만료 처리 - 재시도 방식의 Spin Lock 로직을 Redis로 직접 구현하고 Lua 스크립트로 안전하게 락 해제 처리 - 100개 동..