BACKEND(114)
-
Circuit Breaker, 제대로 이해하기
Circuit Breaker 마이크로 서비스 아키텍처(MSA, Micro Service Architecture)를 쉽게 말하면, 한가지 일만 잘하는 서비스들이 협업하는 아키텍처입니다. 서비스들은 HTTP 통신이나 RPC, Socket 등으로 서로 간의 통신하여 협업합니다. 많은 경우에서, 마이크로 서비스들은 특정 기능을 제공하기 위해 해당 아키텍처의 다른 서비스에게 통신을 요청합니다. 그리곤, 원하는 응답을 받아 계속해서 처리하죠. 비동기의 경우에는 달라질 수 있지만, 동기 방식에는 이런 방식으로 각 서비스가 의존적으로 구성됩니다. 이 경우의 문제점은 한 서비스에서 에러가 발생하거나 느려지면 이를 호출하는 다른 서비스들로 장애가 전파된다는 것입니다. 이를 위해 마이크로 서비스 아키텍처의 서비스들은 스스로..
2022.12.28 -
Rate Limiter, 제대로 이해하기
Rate limiter의 역할과 강단점을 살펴보고, 구현 알고리즘 5가지를 이해하는 것이 해당 포스팅의 목표입니다. 본 포스팅의 모든 그림은 필자가 직접 그린 것으로 무단 사용을 금하며, 사용 시 출처를 반드시 남겨주시길 바랍니다. Rate Limiting Rate Limiting이란 특정 시간 내에 할 수 있는 API 호출 수를 의미합니다. 사용자의 API 호출 수가 Rate Limit값을 초과하면 API 호출이 제한되며 요청이 실패하게 됩니다. 즉, 단어 그대로 API의 속도를 제한합니다. Rate Limiter를 적용하면 고가용성과 안정성을 보장할 수 있습니다. 무차별적으로 인입되는 요청을 받는 서버에서의 불안정성을 생각해보면 RateLimiter의 이 특징을 금방 납득할 수 있습니다. Why us..
2022.11.20 -
Shenyu API Gateway, 어렵지 않게 시작하기 2
이전 포스팅에 이어 해당 포스팅에서는 ShenYu 초기 설정을 수정해보겠습니다. 기본 옵션인 H2 데이터베이스를 MySQL 로 변경하는 작업과 Port를 변경하는 작업, 그리고 만약 binary 파일을 다운받고 실행시켰을 때 java 명령을 못찾는 경우를 위해 경로를 지정하는 방법까지 알아보겠습니다. Using MySQL Shenyu API Gateway에 MySQL을 적용하기 위해서는 Admin에 몇 가지 설정이 필요합니다. 순서는 아래와 같습니다. 1. Download MySQL Connector : Library Package 다운로드 2. conf/application.yml 설정 변경 3. conf/application-mysql.yml 설정 변경: MySQL 연결 정보 입력 하나씩 살펴보도록 ..
2022.10.24 -
Shenyu API Gateway, 어렵지 않게 시작하기 1
이전 포스팅 "Shenyu API Gateway, 어렵지 않게 이해하기" 에서는 SheunYu 에 대한 전반적인 설명을 했는데요. 해당 포스팅에서는 SheunYu를 사용하는 법에 대해 다룹니다. 코드는 Github에서 확인할 수 있습니다. Launch Shenyu Binary Packages 🔗 Ref. Shenyu API Gateway를 사용하기 위해서는 아래와 같은 두 개의 모듈이 실행되어야 합니다. 1. Shenyu Admin Setting 2. Shenyu Bootstrap Setting Admin, Bootstrap 각각 순서대로 실행하면 됩니다. 해당 포스팅에서는 Binary를 받아서 실행시키는 방식을 다루고, 다음 포스팅에서 MySQL을 적용하고 실행 포트를 변경하는 설정으로 실행시키는 과정..
2022.10.23 -
Shenyu API Gateway, 어렵지 않게 이해하기
API Gateway : 전체 서비스 내부 및 외부에서 로드 밸런싱을 포함한 API 트래픽 및 요청을 관리 API Gateway는 백엔드 서비스 또는 데이터와 접속하고 API 호출에 대한 정책, 인증 및 일반 액세스 제어를 적용하여 중요한 데이터를 보호합니다. API Gateway를 통해 사용할 수 있는 특징은 아래와 같습니다. ✔️ 백엔드 시스템 및 서비스에 대한 액세스를 제어 ✔️ 클라이언트와 여러 백엔드 서비스 간 통신 최적화 ✔️ 서비스의 확장성과 고가용성을 보장 ✔️ 요청을 적절한 서비스로 라우팅하고 요청자에게 응답을 다시 보내는 기능을 담당 ✔️ 데이터와 API 간의 보안 연결을 유지 MSA 구조에서 마이크로서비스는 애플리케이션을 느슨하게 결합된 여러 서비스로 분해할 수 있습니다. 이로 인해 ..
2022.10.23 -
MySQL Partition, 제대로 사용하기 (2)
MySQL의 Parition 의 사용법을 알아보며 실제 저장 과정을 분석하는 것이 본 포스팅의 목표입니다. 지난 포스팅 MySQL Partition, 제대로 이해하기 (1)에 이어 이번 포스팅은 Parition의 사용법에 대해 다루고자 합니다. Partition이란 논리적으로 하나의 테이블이지만 실제로는 여러 개의 테이블로 분리해서 관리하는 기능입니다.마치 동일한 형식의 한 개의 테이블을 사용하고 있는 것 같지만, 실제적으로는 여러 개의 물리 파일로 데이터들을 분할하여 보관하는 방식입니다. 이번 포스팅에서는 파티션을 적용하는 방식과 데이터들의 실제 물리적인 저장 과정을 살펴보겠습니다. Create Patition파티션을 생성하는 구문은 아래와 같습니다. CREATE TABLE table_namePAR..
2022.09.07