| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- 프로그래머스
- Github Actions
- web socket
- rabbitmq
- Troubleshooting
- Redis
- Java
- DevOps
- docker
- springboot
- 멀티 모듈
- MSA
- querydls
- testcode
- algorithm
- elasticsearch
- JPA
- aop
- EC2
- Intellij
- tosspayment api
- CI/CD
- CS
- spring boot
- Til
- 객체지향원칙
- trouble shooting
- algoritm
- Kafka
- 테스트 코드
- Today
- Total
목록전체 글 (82)
개인학습기록
1. 문제 상황 (Problem Definition)환경: MSA 아키텍처 내 Saga 패턴과 RabbitMQ를 활용한 비동기 주문/물류 시스템 (DeliverySquad 10)문제 상황: 특정 이벤트 상품(A)에 트래픽이 집중될 경우, 해당 상품의 트랜잭션 처리에 워커 스레드가 묶이면서 큐에 적재된 무관한 일반 상품(B, C, D)의 결제 처리까지 연쇄적으로 지연되었다가장 앞에 있는 패킷이 처리되지 않아 뒤에 있는 패킷들이 줄줄이 대기하게 되는 현상 특정 사용자가 공유 자원을 독점해서, 같은 인프라를 사용하는 다른 사용자들의 성능을 저하시키는 현상 2. 원인 분석단일 큐 병목: 모든 상품의 주문 이벤트를 단일 큐에서 직렬로 처리함에 따라, 전체 시스템의 처리 능력이 병목 지점의 처리 속도에 종속됨DB ..
분산락을 적용하는 과정에서 레디슨이 뭔지 알고 가야할 거 같아서 정리한다. 1. Redisson이란Java용 고성능 Redis 클라이언트 라이브러리입니다. Jedis나 Lettuce 같은 다른 클라이언트는 Redis의 기본 명령어인 SET, GET 등 을 그대로 매핑해서 제공하는 저수준 클라이언트이다. Redisson은 Java의 표준 자료구조 Map, Set, List 등과 락 (Lock) 기능을 Redis를 기반으로 제공하는 고수준 클라이언트라고한다. 2. Redisson의 핵심 특징Java 친화적 인터페이스Redis 명령어를 새로 학습할 필요없이 기존의 Java 개발자에게 익숙한 java.util.concurrent 패키지의 인터페이스(Map, Queue, Lock, Semaphore)를 그대로..
https://github.com/toolatebro/TakenSeat/pull/505 Redis Pipeline 기반 평점 갱신 루프 오류 수정 및 BigDecimal 소수점 제한 적용 by jjsh0208 · Pull" data-og-description="개요 리뷰 평점 및 리뷰 수 통계를 Redis에 캐싱하는 배치 파이프라인과 단건 조회 로직을 전면 리팩토링했습니다. 불필요한 Map 반환 구조와 수동 타입 캐스팅(형변환) 지옥을 개선하여 코드 가독" data-og-host="github.com" data-og-source-url="https://github.com/toolatebro/TakenSeat/pull/505" data-og-url="https://github.com/toolatebro/T..
개요웹소켓은 단일 TCP 연결을 통해 클라이언트와 서버 간에 양방향 실시간 통신을 제공하는 통신 프로토콜이다. 탄생 배경기존의 통신 구조는 클라이언트가 데이터를 요청할 때 HTTP 요청을 보내야한 서버가 응답하는 단방향 통신방식이였다.통신이 끝나면 연결이 끊기게되고 서버가 먼저 클라이언트에게 데이터를 보낼 수 없었다. 실시간 기능을 구현하기 위해서는 클라이언트가 주기적으로 서버에 요청을 보내는 Polling이나 Server Send Event(SSE)를 통해 HTTP 연결을 유지한 상태로 서버가 클라이언트에게 단방향으로 이벤트를 푸시해서 서버가 주기적으로 데이터를 보내줄 수 있었다.( 서버만 일방적으로 데이터를 보내는 단점이있음 ) 이러한 문제를 개선하기위해 탄생한게 웹 소켓이다. 웹 소켓을 통해 서버와..
1. 모놀리틱 아키텍처와 MSA의 차이점은 무엇인가요?모놀리틱(Monolithic) 아키텍처: 서비스의 모든 구성 요소가 하나의 거대한 애플리케이션으로 묶여 있고, 단일 데이터베이스를 공유하는 구조입니다. 초기 개발과 테스트가 빠르다는 장점이 있지만, 시스템이 커질수록 코드가 얽혀 유지보수가 어려워지고, 단 한 줄의 코드를 수정해도 전체 시스템을 멈추고 다시 배포해야 한다는 치명적인 단점이 있습니다.MSA (Microservice Architecture): 거대한 시스템을 '회원', '주문', '결제' 등 독립적인 비즈니스 도메인 단위의 작은 서비스들로 잘게 쪼갠 구조입니다. 각 서비스는 자신만의 독립적인 데이터베이스를 가지며 서로 API나 메시지 큐를 통해 통신합니다. 각 시스템의 장애를 격리 시킬 수..
1. Redis란 무엇이며 왜 사용되는가?데이터를 디스크가 아닌 메모리에 저장하는 인 메모리(In-Memory) 기반의 데이터베이스입니다.사용하는 이유는 빠른 속도와 DB 부하 감소가 목적입니다.데이터를 메모리에서 읽고 쓰기때문에 DB I/O가 발생하지않아 응답속도 빠릅니다.그리고 자주 조회되거나 변경이 잦은 데이터를 캐싱해서 메인 DB로 향하는 트랙픽을 크게 줄일 수 있습니다.또 단순히 Key-value 뿐만 아니라 String, List, Set, Hash 등 다양한 데이터 구조를 지원해 구현이 편리합니다.객체를 통째로 저장할 수도있습니다. 예) String, Hash 2. Redis는 기존의 RDBMS와 어떻게 다른가요? 예를들어 MySQL저장 위치와 데이터 구조에서 차이가납니다.MySQL 같은 R..
1. Restful API에 대해 설명해주세요자원(리소스)과 행위(액션)를 명확하게 분리해서 설계하는 API 아키텍처 규칙입니다.URL에는 동사를 쓰지않고 대상만 명시합니다.클라이언트가 무엇을 하고싶은지는 HTTP 메서드인 GET,POST,PUT/PETCH,DELETE로만 구분해서 서버에 요청합니다.꼬리 질문 : Restful API 기술은 어떠한 문제를 해결하기 위한 기술인지 설명해주세요.과거에는 웹브라우저 화면만 서버가 전달하면 끝이지만 스마트폰이 나오면서 다양한 클라이언트가 하나의 서버와 통신해야하는 상황입니다.그래서 어떤 기기든 통신을 효율적이고 표준화된 방식으로 설계하기위해 나온 기술입니다. 과거에는 HTML만 전달했다면 이제는 어떤 기기든 쓸 수 있게 데이터(JSON)만 표준화해서 전달하는 구..
1. WAS(Web Application Server)와 WS(Web Server)의 차이를 설명해주세요.데이터가 정적인가 동적인가의 차이가있습니다.WS는 클라이언트의 요청을 받아 미리 준비되어있는 정적인 파일을 있는 그대로 응답해주는 역할입니다.동적인 로직 처리는 불가능합니다. 처리할 수 없는 복잡한 요청이 들어오면 WAS로 넘겨줍니다.예시 ) Nginx, apacheWAS는 웹 서버의 기능을 더해, DB 조회나 복잡한 비즈니스 로직 처리를 통해 동적인 콘텐츠를 제공합니다.예시 ) Tomcat 2. Spring Framework에 대해 설명해주세요.자바 기반의 엔터프라이즈 애플리케이션을 쉽고 안정적으로 개발할 수 있도록 도와주는 오픈소스 프레임워크입니다.개발자가 인프라 설정에 얽매이지않고 비즈니스 로직..
1. 프로세스와 쓰레드의 차이에 대해 설명해주세요.프로세스와 쓰레드의 차이는 운영체제로부터 자원을 할당 받는 독립성과 메모리 공유 여부입니다.프로세스는 하드 디스크에 있는 프로그램이 메모리에 올라가서 실행중인 프로그램이 된 상태를 말합니다.완벽히 독립적이기 때문에 메모리 영역을 다른 프로세스와 공유하지않습니다.하나의 프로세스가 에러로 죽더라고 다른 프로세스에 영향을 주지않습니다.스레드는 하나의 프로세스 내부에서 실제로 작업을 실행하는 작업의 최소 단위 입니다.프로세스 내에서 stack 영역만 할당받고 그 외의 영역은 공유합니다.때문에 다른 스레드와 데이터 교환과 전환의 속도가 빠릅니다.대신 하나의 스레드가 죽으면 프로레스가 전체가 죽을수도있습니다. 2. 멀티 프로세스와 멀티 쓰레드의 특징에 대해 설명해..
1. HTTP 프로토콜에 대해 설명해주세요.웹상에서 클라리언트와 서버가 데이터( 텍스트, 이미지, json등 )를 주고받기해 약속한 통신 규약입니다.비연결성과 무상태성이라는 특징이 있습니다.클라이언트가 요청을 보내고 서버가 응답을하면, 서버 자원을 낭비하지않기 위해 연결을 끊어버리는 비연결성통신이 끝나면 연결이 끊기므로, 서버는 클라이언트의 이전 상태(로그인 여부 등)을 전혀 모르는 무상태성무상태성으로인해 쿠키와 세션이나 JWT와 같은 인증 기술을 도입해서 상태를 관리합니다. 2. HTTP와 HTTPS의 차이점은 무엇인가요?데이터 암호화 여부의 차이가있습니다.HTTP: 클라이언트와 서버가 텍스트(평문) 데이터를 그대로 주고받습니다.중간에 해커가 통신을 가로채면 비밀번호나 개인정보 같은 내용을 누구나 쉽게..