본문 바로가기

Etc.9

브라우저에 URL을 입력하면 어떤 일이 벌어질까? 목차 개요 웹브라우저 URL을 입력하고 Enter 키 입력 웹 브라우저가 도메인명의 IP 주소 조회 웹 브라우저가 서버와의 TCP 연결 시작 웹 브라우저가 HTTP 요청을 서버로 전송 웹 서버가 요청을 처리하고 응답을 다시 전송 웹 브라우저가 콘텐츠 렌더링 결론 1. 개요 우리는 매일 웹 브라우저를 열고 즐겨찾는 웹사이트를 탐색한다. 주소창에 URL을 입력하거나 페이지 링크를 클릭하면 해당 페이지로 이동한다. 그런데, 그 뒷단에서 무슨 일이 일어나는지 생각해 본 적이 있는가? 이 글에서는 웹브라우저에 URL을 입력하면 어떤 일이 벌어지는지 살펴보겠다. 2. 웹브라우저 URL을 입력하고 Enter 키 입력 위와 같이 브라우저에 https://www.naver.com 입력한 URL을 분류해보자. 즉 nave.. 2024. 3. 26.
대용량 트래픽 처리를 위한 경매 기능 최적화 목차 개요 경매 기능 구조 상품 가격을 위한 캐싱 실시간 최고 입찰액을 갱신하는 웹소켓 대용량 트래픽 처리를 위한 메시지 큐 결론 1. 개요 경매는 정해진 시간에 높은 가격을 제시한 회원이 상품 구매 자격을 얻는 거래체결 방식이다. 경매를 진행하면 순간적으로 많은 입찰 요청이 들어 오고 실시간으로 상품 가격이 변동 된다. 수많은 트래픽과 사용자 경험을 개선하기 위해 프로젝트에서는 Redis, WebSocket, RabbitMQ를 이용해 경매 기능을 최적화 한다. 2. 경매 기능 구조 경매 기능은 프로젝트의 핵심 기능이며 요구사항은 다음과 같다. 상품을 보고 있는 사람은 매순간 변경된 입찰 최고 금액을 실시간으로 화면에 보여져야 한다. 높은 가격을 먼저 서버로 요청한 사람이 구매권한을 가진다. 즉, 순서에.. 2024. 3. 20.
RabbitMQ 메세지큐 적용으로 성능 개선하기 목차 개요 메세지 큐(Message Queue)란? RabbitMQ 설정 메세지 발송(Producer) 구현 메세지 받는(Consumer) 구현 nGrinder 성능 테스트 결론 1. 개요 다수의 요청을 효과적으로 관리하고 비동기적으로 처리하기 위해, 메시지큐 시스템을 도입하였다. 입찰 요청이 들어오면 큐에 저장한 후 순차적으로 처리하도록 구성하였다. 전반적인 구성과정을 살펴보고 nGrinder로 테스트를 통해 성능이 얼마나 차이나는지 비교해 보자. 2. 메세지 큐(Message Queue)란? 메세지 큐를 간단하게 말하면 프로세스나 서비스 간에 메시지를 전송하고 저장하는 중간자 역할자이다. 메시지 큐를 사용하면 메시지를 보내는 쪽(프로듀서)과 받는 쪽(컨슈머)이 서로의 처리 속도나 가용 상태에 영향을 .. 2024. 3. 19.
Redis 캐시 적용으로 성능 개선하기 목차 개요 캐시(Cache)란? 입찰 생성 시 Redis 캐시 업데이트 최고 입찰 금액 조회시 Redis 캐시 사용 nGrinder 성능 테스트 결론 1. 개요 경매에서 입찰 금액은 실시간으로 관리되고 입찰은 순간적으로 많은 요청이 발생 할 수 있다. 입찰이 많이 몰리게 되면 DB에서 입찰 금액을 빈번하게 가져와 입찰금액이 갱신하고 있는 상황이었다. 최고 입찰액을 가져오는 시간을 줄이고자 DB조회 대신 Redis에서 값을 빠르게 가져와서 응답하고자 하였고 nGrinder로 테스트를 통해 성능이 얼마나 차이나는지 비교해 보자. 2. 캐시(Cache)란? 캐시를 간단하게 말하면 데이터를 미리 복사해 놓는 임시 저장소를 말한다. 접근 시간이 긴 하드디스크를 읽는 대신 빠르게 접근 할 수 있도록 도와주는 역할을.. 2024. 3. 15.
Auditing을 고려한 테이블 설계 과정 목차개요Audit 정보Audit 칼럼 정하기프로젝트 ERD에 Audit 적용하기결론1. 개요테이블을 설계하면서 Auditing을 위한 칼럼들을 어떤식으로 각각의 테이블에 넣어야 할지를 고민했었다.그래서 이번 정리를 통해 Auditing 칼럼들을 어떻게 테이블에 녹여 낼지 기준을 잡아보려한다.2. Audit 정보우선 많은 Audit 칼럼이 존재하는데 살펴본 바로는 아래와 같은 많은 칼럼들이 존재한다.생성일 (Created Date) : 레코드가 생성된 일시.생성자 (Created By) : 레코드를 생성한 사용자 또는 시스템.수정일 (Last Modified Date) : 레코드가 마지막으로 수정된 일시.수정자 (Last Modified By) : 레코드를 마지막으로 수정한 사용자 또는 시스템.삭제 여부 .. 2024. 3. 2.
Scale out시 세션불일치 방지를 위한 Redis 선정과정 목차 개요 Redis 2-1. 특징 Memcached 3-1. 특징 그래서 차이점이 뭐야? 결론 1. 개요 실제 업무 상황에서 발생 할 수 있는 상황을 만들고자, Scale out에서 세션불일치 방지하려고 한다. 그 과정에서 Redis와 Memcached 같이 메모리 기반 저장소를 비교하고 프로젝트 상황에 맞는 저장소를 선정해보자. 2. Redis Redis(Re mote Di ctionary Se rver)는 Key-Value 쌍의 해시 맵과 같은 구조를 가진 비관계형 DBMS이다. 오픈 소스 기반으로 인메모리 데이터 구조 저장소로 메모리에 데이터를 저장한다. 따라서, 별도의 쿼리문이 필요 하지 않고, 인메모리에 저장되기 때문에 상당히 빠른 속도로 처리 할 수 있다. 2-1. 특징 성능 메모리에 저장되.. 2024. 2. 23.