전체 글 26

간단하고도 빠른 서버 성능 최적화 (node js를 중심으로)

이전에 Nginx를 사용해서 이미지 캐싱 서버를 따로 구축하여 사이트 속도를 개선했는데도 불구하고 아직 우리 사이트 속도는 사용자가 원활하게 사용하기에는 느렸다. 다른 이커머스 사이트를 보면 로딩 없이 사이트 전체 내용을 바로 확인할 수 있던데, 왜 안될까? 분석 결과 원인은 api의 속도가 느리기 때문이었다. 문제긴 한데 어떻게 api 속도를 빠르게 할 수 있을까? 이미지뿐만 아니라, api 서버에서 가져오는 데이터도 캐싱할 수 있지 않을까? 라는 생각이 문득 전에 공부했던 경험을 통해 들었고 적용 해보기로 했다. api 서버에서 가져오는 데이터를 캐싱하는 방법은 여러 가지다. 대표적으로 Global Caching, Local Caching 두 가지 전략으로 나눌 수 있다. Global Caching은..

서버 2023.05.04

HTTP 프로토콜이 만들어진 이유

페이스북 커뮤니티에 해당 글 공유 후기 생활코딩이라는 페이스북 커뮤니티에서 해당 포스팅을 올리고 많은 분들이 공유를 해주셨습니다. 그리고 응원 메시지를 보내주셨습니다. 감사합니다 행복해요 ㅎㅎ 이 글을 작성하는 이유 이 글은 저와 같이 백엔드 개발자를 준비하시는 분들이 읽는다는 생각으로 적었습니다. 저는 백엔드 개발자를 준비하면서, http와 관련된 코드를 작성할일이 자주 있었습니다. 예를들면 Get, post method, url, Response code와 같은 것들입니다. 저는 스프링을 통해서 http를 사용하고 있습니다. 아래 이미지는 http 프로토콜을 사용한 회원가입 코드입니다. @PostMapping(path = "/users") public ResponseEntity userAdd(User..

서버 2022.09.11

Scale out에 적합한 로그인 환경에 대해 검토한 글

소개 세션 불일치 문제는 유저의 쿠키에 있는 세션 데이터와 서버가 가지고 있는 세션 데이터가 일치하지 않는것을 말합니다. 문제 상황 시나리오 아래 사진을 보시면 파란색, 오렌지색 서버가 있습니다. 트래픽의 증가로 인해 하나의 서버를 Scale out한 상태이기 떄문에 서버가 두 대로 늘어났습니다. 사용자 A는 제 어플리케이션을 이용하기 위해 요청을 시도합니다. 사용자 A가 로드밸런서에게 로그인을 요청합니다. 로드밸런서는 알고리즘에 맞게 파란색 서버에게 로그인을 요청합니다. 파란색 서버는 로그인을 성공한 유저 A의 쿠키에 자신만 해독할 수 있는 세션 데이터를 로드밸런서를 통해 유저 A에게 전달합니다. USER A가 오렌지색 서버를 통해 마이페이지를 이용해서 개인정보를 확인하기 위해 로드밸런서에게 요청을 보..

서버 2022.09.11

서버의 장애를 대비한 확장 방법 검토하기

Scale out vs Scale up 저는 프로젝트의 개발 목표 중 하나인 대규모 트래픽을 처리하기 위한 앱을 만들기 위해서 두가지 방법을 생각했습니다. Scale out과 Scale up 서버 확장 방식입니다. 전자는 서버 하나의 성능을 올리는 방식이고, 후자는 서버의 개수 여러개로 늘리는 방법입니다. 서비스의 특성상 Scale out이 적합하다고 판단했습니다. 이유는 최악의 상황을 가정했을때, 하나의 서버가 하드웨어 성능 문제로 트래픽을 감당하지 못해서 사용자가 원하는 데이터를 받는 속도가 매우 느려지게 될 것이라 생각했기 때문입니다. 실제로 2014년도 말에 도서정가제 시행으로 인해 할인 도서 구매량이 급증하면서 온라인 서점이 마비되는 일이 있었습니다. 추후에 이러한 일이 벌어지지 않는다는것을 예..

서버 2022.09.11

데이터베이스 인덱스 이해해보기

데이터베이스에서 인덱스란 데이터베이스에서 인덱스는 자료구조 형태로 저장 됩니다. MySQL에서는 일반적으로 B+ Tree 형태로 저장이 되는데요! B+ Tree란 B+ Tree에 데이터를 삽입, 검색하는 과정을 알아보면 왜 인덱스를 활용하면, 데이터 검색 속도가 왜 빨라지는지 알 수 있습니다. B+ Tree에 데이터를 삽입할 때, 상위 노드로 올라가는 기준은 page size가 꽉 찼을때의 데이터 개수가 n 이라면 n-1/2+2번째 입니다. 만약 n이 짝수라면, n-1/2번째가 상위 노드로 올라가게 됩니다. 아래 링크는 B+ Tree를 실습할 수 있는 사이트 링크 입니다. https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html 클러스터형 인덱스란? ..

디비 2022.09.11