분류 전체보기
[대규모 시스템 설계 기초 정리] 처리율 제한 장치
가상 면접 사례로 배우는 대규모 시스템 설계 기초를 정리한 내용입니다.처리율 제한 장치 (Rate Limiter)클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치ex) 특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한장점Dos 공격에 의한 자원 고갈을 방지비용 절감특히 제3자 API에 사용료를 지불하고 있는 경우 매우 중요서버 과부하 방지Bot에서 오는 트래픽이나 사용자의 잘못된 이용 패턴으로 유발된 트래픽을 걸러내는데 활용 처리율 제한 장치를 어디에 둘 것인가?클라이언트 측에 두는 경우일반적으로 클라이언트 요청은 쉽게 위변조가 가능해서 처리율 제한을 안정적으로 걸 수 있는 장소가 되지 못한다.서버 측에 두는 경우API 서버에 두는 방법처리율 제한 미들웨어를 만들어 해당 미들웨어..
[Redis] Redis 운영 관리 정리
Redis 운영 관리를 정리한 내용입니다. Redis의 이해 Redis의 특성 Key-Value 스토어 컬렉션 지원 Pub/Sub 지원 디스크 저장: Redis는 인메모리 DB이면서 memcached 등과 다르게 디스크 저장도 지원. RDB: 현재 메모리의 상태를 디스크에 저장. AOF: 지금까지 실행된 업데이트 관련 명령어의 집합. (set/del 등의 명령어를 기록해둠) Redis에서는 가능하면 두 개를 모두 사용하는 것이 좋다지만, 디스크를 사용해서 저장하는 만큼 성능 손실은 어느 정도 감수해야 함. 복제 Redis는 마스터/슬레이브 Replication을 지원. 마스터에 장애가 발생하면 슬레이브로 서비스하거나 마스터의 부하가 많을 때에는 슬레이브를 이용해서 읽기를 처리할 수도 있음. Redis v..
[Redis] Redis 세미나 정리
우아한 Redis 세미나를 보고 제가 필요한 부분 위주로 정리한 글입니다. Redis 특징 In-Memory Data Store 메모리에서 데이터를 처리하므로 빠른 속도. 다양한 자료구조를 지원 Strings, set, sorted-set, hashes, list Single Thread O(n) 명령어를 주의해야 한다. Redis 자체가 Atomic을 보장해준다. (싱글 스레드라) Lost update 등 문제가 발생하지 않는다. (잘못 사용하는 경우 제외) Cache 구조 Look aside Cache Write Back 쓰기가 빈번한 작업에서 사용. 일단 캐시에 저장해뒀다가, 특정 시점마다 한 번에 DB에 저장하는 구조. 단점 휘발성인 메모리에 먼저 저장해두기 때문에, 장애가 발생하면 데이터가 사라..
[AWS ECS] ECS 개념 정리
AWS ECS로 시작하는 컨테이너 오케스트레이션와 ECS 레퍼런스 등을 보며 개인적인 공부용으로 정리한 글입니다. 컨테이너 오케스트레이션 컨테이너를 적절히 배치하고 관리할 수 있도록 도와주는 도구 쿠버네티스, Docker Swarm, AWS ECS 등 AWS ECS의 장단점 특별한 준비 없이 사용할 수 있다는 장점. 도커의 모든 기능을 사용하기에는 약간 제약이 존재하며, 세부적으로 컨트롤 하기 어려움. AWS 벤더에 의존적임. AWS의 구성 클러스터와 컨테이너 인스턴스 클러스터는 ECS에서 가장 기본적인 단위 도커 컨테이너를 실행할 수 있는 가상의 공간으로, 논리적인 단위이다. Task Definition, Task Task ECS에서 컨테이너를 실행하는 최소 단위는 테스크. Task는 하나 이상의 컨테..
[MySQL] 옵티마이저 고급 최적화
기존의 Real MySQL (5.0, 5.1 버전) 책을 너무 유익하게 봤는데, Real MySQL 8.0이 전면 개정판이 나와서... 설레는 마음에 보면서 개인적인 공부용으로 정리하고 있습니다. 역시 믿고 보는 Real MySQL... 👍 한번 사서 보시는 것을 강력 추천드립니다! 고급 최적화 MRR과 배치 키 액세스 MRR은 Multi-Range-Read로, Disk Sweep Multi-Range-Read라고도 한다. 네스티드 루프 조인 MySQL에서 지금까지 지원하던 조인 방식은 네스티드 루프 조인으로, 드라이빙 테이블의 레코드를 한 건 읽어서 드리븐 테이블의 일치하는 레코드를 찾아서 조인을 수행하는 것이다. MySQL 서버의 내부 구조상 조인 처리는 MySQL 엔진이 처리하지만, 실제 레코드를 ..