목록분류 전체보기 (145)
쿼카러버의 기술 블로그
로드밸런서는 네트워크 공부의 꽃이다. 필자는 현재 일하고 있는 회사에서 직접 L7 로드밸런서를 구현해보면서 로드밸런서에 대해 공부를 했는데 L4스위치와 L7스위치가 무엇인지에 대한 개념을 하나의 글에서 다루는 것을 찾지 못해 필자가 나중에 기억이 안나면 참고하기 위해 글을 쓴다. 로드밸런서는 정말 광범위하고 복잡한 주제다. 사실 이 글이 끝이 아니고 이 글을 이해했으면 이해해야 할 개념들이 점점 더 많이 보여 고통스럽다. 그래도 개발자가 알아두어야할 지식이기 때문에 앞으로도 이 글 말고도 더 깊은 주제를 다뤄보고자 한다. 로드밸런서란? 서버나 장비의 트래픽을 분산하기 위해 사용하는 장비를 로드 밸런서라고 부른다. 이렇게 부하 분산이 필요한 이유는 갑작스런 이용자의 증가, 사업 확장 등의 이유로 더 많은 ..
Switch가 하는일은 경로 선택, 즉 Switching이다. Switching을 해주는 기기는 모두 Switch이기 때문에, 어떤 한 장치를 지칭하는 단어가 아니라는 점에 유의해야 한다. 대표적인 예로 Router는 기본적으로 IP Layer에서 스윗칭을 하는 기기다. 즉, 스위치는 라우터를 포함하는 개념이다. 이걸 왜 설명하지?라고 생각할 수 있겠지만 필자는 헷갈렸다.. 네트워크를 도로로, 패킷을 자동차라고 생각했을 때, Switch는 교차로에 존재하고있다가, 그 교차로에서 routing table이라는 이정표를 보고 패킷이 가야할 경로로 switching해준다. 물론 이때 이 routing table을 적절한 알고리즘으로 계산하기 위해 자기들끼리 프로토콜을 가지고 최적화된 경로를 결정한다. 자 여기..
require? ipmort? require는 commonJS의 키워드이자 nodejs에서 외부 모듈을 가져와 사용할 때 쓰는 함수다. 쉽게 말해서 다른 파일의 코드를 불러오는데 사용된다. 근데 문제는 ES6부터는 require가 아닌 import 를 통해 외부 모듈을 가져오게 되는데, 용도는 거의 비슷해보이지만 사용 방법이 달라서 처음 nodejs를 접했을 때 매우 혼란스러웠다. 필자는 ES6부터 자바스크립트를 접했기 때문에, import 키워드를 사용해 외부 모듈을 불러오는게 익숙한데, 웹 상에 존재하는 여러 예제들을 보면 아직 require 키워드를 사용하는 경우가 많았기 때문이다. var msg = require("messageObject.js") 무튼 정리해보면 require이나 import 둘..
필자는 최근 회사에서는 SQL보다는 dynamoDB, redis, mongoDB와 같은 NoSQL 데이터베이스를 주로 활용하다보니, SQL의 기본 개념이 슬슬 가물가물해지기 시작했다(ㅠㅠ). 물론 막상 보면 기억은 나지만, A to Z 설명해보라고 하면 논리정연하게 설명할 자신이 없다보니, 앞으로 간단하게나마 기본 개념들을 시간 날 때마다 정리해보려고 한다. 본 글의 주제는 데이터베이스 관계(Relationship)의 기본 개념이다. 관계와 관련된 모든 키워드를 다루진 않고, 데이터베이스의 관계를 이루는 주요 개념들은 무엇이 있는지, 그리고 각 관계 (1:1, 1:N, N:N) 종류에 따른 설명과 테이블 생성 예시를 다루는 아주 기본적인 내용으로 이루어져있다. 앞으로 꾸준히 여러 키워드들에 대한 in-d..
필자는 현재 API서버를 열심히 개발 하고 있다. 개발한 서비스가 트래픽을 많이 받다보니, 트래픽을 적절히 제한하지 않았을 때 장애가 발생했고, 그에 따라 API의 Rate Limit을 구현해야 했다. 공부하다보니 흥미가 생겨 나중에 내가 다시 챙겨보기 위해 글을 정리하려고 한다. Rate Limit시리즈의 목차는 다음과 같다. [Rate Limit - step 1] Rate Limit이란? (개념, Throttling, 분산환경에서의 구현) [Rate Limit - step 2] Leaky Bucket 알고리즘 구현 (rate limiting) (p.s. memory estimation 하는 법) [Rate Limit - step 3] Token Bucket 알고리즘 구현 (rate limiting) ..
필자는 현재 API서버를 열심히 개발 하고 있다. 개발한 서비스가 트래픽을 많이 받다보니, 트래픽을 적절히 제한하지 않았을 때 장애가 발생했고, 그에 따라 API의 Rate Limit을 구현해야 했다. 공부하다보니 흥미가 생겨 나중에 내가 다시 챙겨보기 위해 글을 정리하려고 한다. Rate Limit시리즈의 목차는 다음과 같다. [Rate Limit - step 1] Rate Limit이란? (개념, Throttling, 분산환경에서의 구현) [Rate Limit - step 2] Leaky Bucket 알고리즘 구현 (rate limiting) (p.s. memory estimation 하는 법) [Rate Limit - step 3] Token Bucket 알고리즘 구현 (rate limiting) ..
필자는 현재 API서버를 열심히 개발 하고 있다. 개발한 서비스가 트래픽을 많이 받다보니, 트래픽을 적절히 제한하지 않았을 때 장애가 발생했고, 그에 따라 API의 Rate Limit을 구현해야 했다. 공부하다보니 흥미가 생겨 나중에 내가 다시 챙겨보기 위해 글을 정리하려고 한다. Rate Limit시리즈의 목차는 다음과 같다. [Rate Limit - step 1] Rate Limit이란? (개념, Throttling, 분산환경에서의 구현) [Rate Limit - step 2] Leaky Bucket 알고리즘 구현 (rate limiting) (p.s. memory estimation 하는 법) [Rate Limit - step 3] Token Bucket 알고리즘 구현 (rate limiting) ..
필자는 현재 API서버를 열심히 개발 하고 있다. 개발한 서비스가 트래픽을 많이 받다보니, 트래픽을 적절히 제한하지 않았을 때 장애가 발생했고, 그에 따라 API의 Rate Limit을 구현해야 했다. 공부하다보니 흥미가 생겨 나중에 내가 다시 챙겨보기 위해 글을 정리하려고 한다. Rate Limit시리즈의 목차는 다음과 같다. [Rate Limit - step 1] Rate Limit이란? (개념, Throttling, 분산환경에서의 구현) [Rate Limit - step 2] Leaky Bucket 알고리즘 구현 (rate limiting) (p.s. memory estimation 하는 법) minimum time unit is seconds(s) self.rate = rate # how many..