목록Server (8)
봉황대 in CS
Global cache vs. Local cache분산 환경에서 Global cache는 다수의 서버가 바라볼 수 있는 캐시를 말한다. 예를 들어, MSA 환경에서 Redis를 캐시 서버로 띄워놓고, 여러 서버들이 DB에 있는 원본 데이터를 조회하는 것이 아니라 Redis에 캐싱되어 있는 데이터를 조회하는 것이다. 이를 통해 DB connection 요청을 줄일 수 있으며 Redis의 빠른 조회 성능을 통해 전체 시스템의 성능도 향상할 수 있다. 하지만 이는 원래 DB로 가야 했던 요청이 캐시 서버로 옮겨진 것일 뿐이라, 만약 조회가 매우 빈번하게 발생하는 데이터인 경우에는 캐시 서버가 그 부하를 모두 견뎌야 한다. 그리고 캐시 서버에서 데이터를 가져올 때마다 서버에서 메모리 할당이 발생하고 이후 GC가..
문제 상황이벤트 목록을 조회하는 API를 구현하는 중이었다. 이벤트 목록은 자주 조회되는 데이터라, 매 순간마다 DB에 요청을 보내는 것은 비합리적이다. 한번에 얻을 수 있는 DB connection의 개수는 한정적이기 때문에 DB에게 부하를 많이 주게 되면 connection을 얻기 위해 기다리는 시간이 늘어날 수 밖에 없고, 이벤트 목록 조회 뿐만 아니라 다른 요청들도 DB에게 가게 된다면 그 파급 효과가 더욱 커지게 된다. 따라서 Redis에 캐싱해두는 전략을 사용하여 DB connection 요청을 줄이고자 하였다. (+ 이벤트 목록은 모든 사용자에게 동등하게 보이는 Global 데이터이기 때문에 Redis cache에 올려두어도 문제가 없다.) 조회 로직은 다음과 같다.1. Redis에 캐싱된..
Pagination(또는 Paging)은 데이터를 조회하는 경우, 데이터 전체를 가져오는 것이 아니라 데이터를 페이지라는 일정량으로 쪼개어 요청한 페이지에 대한 데이터만 일부분 가져오는 기법이다. 전체 데이터가 매우 많은 경우에 Pagination을 통해 DB의 부하를 줄일 수 있으며, '무한 스크롤'을 위한 조회 API 구현 시 많이 사용하는 방법이다. Pagination을 구현하는 방법에는 여러 가지가 존재하는데, 이 글에서는 Offset 기반 pagination과 Cursor 기반 pagination을 알아본다. 그리고 nGrinder를 통한 부하 테스트를 진행하여 서로를 비교하고 왜 이런 차이가 발생하는지를 정리한다.예시 상황상품(Product) table에는 300,000건의 데이터가 저장되어 ..
[ 211106 6주차 강의 정리 ] + 워크북 & 스터디 내용 추가 (211113) * 복습 API = HTTP Method + URI 5주차 강의 중.. 2021.11.07 - [Computer Science/Server] - API / HTTP Packet / HTTP Method 리소스 식별 시 URN (Uniform Resource Name) - 이름 / URL - 위치 URN은 거의 사용하지 않기 때문에 URI ≒ URL라고 해도 무방 ❖ REST API 1. REST Representation State Transfer 강의 - HTTP로 정보를 보낼 때, URI를 어떻게 설계하고 어떤 메소드를 사용할 것인지 표준으로 정해놓은 약속 웹 애플리케이션 간 데이터 통신을 허용하는 API를 구축하는..
[ 211030 5주차 강의 정리 ] + 워크북 & 스터디 내용 추가 (211106) ❖ API 1. 정의 : Application Programming Interface 응용 프로그램(Application)에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든(Programming) 인터페이스(Interface) * Interface 1주차 워크북 중.. 1. 인터페이스 : 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템 5주차 강의 - 서로 다른 개체 끼리의 상호작용을 돕는 시스템 2. GUI (Graphical User Interface) : 사용자가 편리하게 사용할 수..
[ 211016 4주차 강의 정리(3) ] + 워크북 & 스터디 내용 추가 (211031) ❖ Key * 예시 홍길동과 홍길딩은 쌍둥이! 둘의 나이와 주소는 중복되기 때문에 이 값들을 통해서는 누가 누구인지를 구별할 수 없음 각각을 비교할 수 있는 속성(Attribute)은 이름! → Key 1. 정의 : DB에서 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성 주어진 Relation에서 모든 인스턴스 가운데 유일함(Uniqueness)을 보장해 주는 하나 이상의 속성의 집합 2. 특성 ❏ 유일성 (Uniqueness) : 하나의 키 값으로 하나의 튜플을 유일하게 식별할 수 있어야 한다 ❏ 최소성 (Minimality) : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 ..
클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램 프록시 : 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것 프록시 서버 : 그 중계 기능을 하는 것 * Forward proxy 클라이언트가 인터넷에 직접 접근하는게 아니라 포워드 프록시 서버가 요청을 받고 인터넷에 연결하여 결과를 클라이언트에 전달 (forward) 프록시 서버는 Cache 사용 → 자주 사용하는 데이터라면 요청을 보내지 않고 캐시에서 가져옴 * Reverse proxy 클라이언트가 인터넷에 데이터를 요청하면 리버스 프록시가 이 요청을 받아 내부 서버에서 데이터를 받은 후 클라이언트에 전달 → 클라이언트는 내부 서버에 대한 정보를 알 필요 없이 리버스 프록시..
[ 211002 2주차 강의 정리(2) ] + 워크북 & 스터디 내용 추가 (211010) * IP (Internet Protocol) : 인터넷 상의서의 고유한 주소 (숫자) IPv4 일반적으로 사용 → IPv6로 넘어가는 추세 * IPv4 (Internet Protocol Version 4) : 총 4개의 숫자 군으로 표시, 각 숫자 군은 마침표로 구분, 각 숫자는 0~255까지의 자연수 중 하나 (ex. 121.254.243.201) → IPv4를 사용하여 표시할 수 있는 인터넷 주소는 최대 256^4개 (약 43억 개) → 인터넷 사용자 수가 급증하면서 주소 고갈 문제 생김 ⇒ IPv6 * IPv6 (Internet Protocol Version 6) : IPv4의 한계인 주소 고갈, 멀티미디어 ..