본문 바로가기

API

(9)
[gRPC] gRPC란 무엇인가? gRPC는 Google이 개발한 오픈 소스 원격 프로시저 호출(Remote Procedure Call, RPC) 프레임워크입니다. gRPC는 네트워크를 통해 클라이언트와 서버 간에 함수 호출을 할 수 있도록 설계된 시스템으로, 마치 로컬 함수 호출처럼 사용 가능합니다. gRPC의 주요 특징은 다음과 같습니다프로토콜 버퍼 사용: gRPC는 데이터 직렬화 및 역직렬화를 위해 Protocol Buffers (Protobuf)라는 언어 중립적이고 플랫폼 중립적인 메커니즘을 사용합니다. 이는 효율적이고 빠른 데이터 처리를 가능하게 합니다.다양한 언어 지원: gRPC는 C++, Java, Python, Go, Ruby 등 여러 프로그래밍 언어를 지원합니다. 이는 클라이언트와 서버가 서로 다른 언어로 작성된 경우에도..
[API Auth] JWT란 무엇인가?! (구성 요소 및 예시) JWT (JSON Web Token)는 주로 인증 및 권한 부여를 위해 사용되는 압축된 JSON 객체입니다. JWT는 세 가지 주요 부분으로 구성되어 있으며, 각 부분은 점(.)으로 구분됩니다. 이 세 부분은 헤더(Header), 페이로드(Payload), 서명(Signature)입니다. 이제 각 부분을 자세히 살펴보겠습니다.JWT의 구성 요소헤더 (Header) 헤더는 두 가지 정보를 포함합니다:알고리즘(alg): 서명을 생성하는 데 사용된 해싱 알고리즘 (예: HS256, RS256).타입(typ): 토큰의 타입, JWT로 설정합니다.{ "alg": "HS256", "typ": "JWT"}페이로드 (Payload) 페이로드는 JWT의 본문 부분으로, 클레임(Claim)이라고 불리는 일련의 정보가 ..
HTTP3에 대해 알아보기! HTTP/3는 인터넷 상에서 데이터를 전송하기 위해 사용되는 프로토콜 중 하나입니다. 이전에 사용되던 HTTP/1.1과 HTTP/2의 후속 버전으로, 성능과 보안 측면에서 개선되었습니다. HTTP/3는 UDP(User Datagram Protocol)를 기반으로 동작하는 QUIC(Quick UDP Internet Connections) 프로토콜을 사용합니다. UDP는 기존의 TCP(Transmission Control Protocol)보다 더 경량화되어 있으며, 연결 설정이 필요하지 않고 패킷 손실에 대한 복구 기능도 제공합니다. 이를 통해 HTTP/3는 기존의 TCP를 사용하는 HTTP/1.1과 HTTP/2보다 더 빠른 연결 설정과 전송 속도를 제공할 수 있습니다. 또한, HTTP/3는 보안 측면에서도..
RPS와 TPS의 차이점 무엇일까? RPS와 TPS는 부하 테스트에 사용되는 용어로서, 각각 'Requests Per Second'(초당 요청 수)와 'Transactions Per Second'(초당 거래 수)를 의미합니다. 이 두 용어는 시스템의 성능을 측정하는 데 사용되며, 그 차이점은 다음과 같습니다:구분내용Requests Per Second(RPS)이는 시스템이 초당 처리할 수 있는 요청의 수를 나타냅니다. 이는 부하 테스트에서 시스템의 처리 능력을 측정하는 데 사용되며, HTTP 요청과 같은 단순한 통신을 참조합니다.Transactions Per Second(TPS)이는 시스템이 초당 처리할 수 있는 거래의 수를 나타냅니다. 거래는 단순한 요청보다 복잡하며, 일반적으로 여러 단계의 처리와 데이터의 변화를 포함합니다. 예를 들어,..
[부하테스트] Locust란 무엇인가? Locust는 파이썬으로 작성된 오픈 소스 부하 테스트 도구로, 웹 응용 프로그램 및 서비스를 테스트하는 데 사용됩니다. Locust는 사용자 시나리오를 정의하고 각 시나리오에 대한 부하를 생성하는 데 도움이 되며, 이를 통해 시스템이 특정 부하에 대해 어떻게 동작하는지 확인할 수 있습니다.아래는 Locust를 사용하여 간단한 부하 테스트를 수행하는 과정입니다:Locust 설치: Locust를 설치하려면 터미널 또는 명령 프롬프트에서 다음 명령을 실행합니다pip install locustLocust 스크립트 작성: Locust 스크립트는 테스트할 웹 애플리케이션의 동작을 정의합니다. 일반적으로 다음과 같은 형식을 가지게 됩니다:from locust import HttpUser, between, taskc..
[API] REST API 보안 1. 인증 - API 서비스를 사용하고자 하는 대상자가 서비스 사용이 가능한지 여부를 확인하는 것을 의미한다. (일반적인 웹서비스에 로그인과 동일한 기능이다.) 1-1. API Key 가장 기초적인 방법으로 서비스 제공자가 발급해준 KEY를 통해 인증을 하는 방식이다. - API Key는 특정 사용자만 알 수 있는 일종의 문자열로 되어 있다. (예:aASDFasdf87AS5D4F2asddf234SDF234) - API Key는 API 서비스 제공자가 제공하고 사용자는 API Key 정보를 메시지 안에 포함하여 호출한다. - API Key는 한번 노출되면 전체 API가 뚫리는 문제가 발생할 수 있기 때문에 높은 보안 인증이 필요한 상황에는 적합하지 않는 방법이다. 1-2. API Token Token을 활..
[API] REST API 설계 해보기 REST API 디자인 가이드 REST API를 어떻게 디자인 하는지 알아보고 좋은 REST API를 사용자들에게 제공할 수 있도록 해보자. 1. REST는 간략하고 직관적이게 디자인하자. - REST API는 URL만 보고 URL이 의미하는 바를 알 수 있어야 한다. - REST API는 길게 만들기 보다 짧게 만들어 제공하자. (최대 2 Depth를 권장 한다.) - URL은 될 수 있으면 명사를 사용하자. (URL 작성되는 내용은 리소스 정보를 다루고 있기 때문에 동사보다는 명사가 더욱 어울린다. 단, 명사를 사용하게 되면 단수 보다는 복수형을 사용하자. 의미상 복수형이 더욱 어울리는 표현이기 때문이다.) [잘못된 예 : HTTP Post로 모두 정의하고 get/set을 URL에 명시함으로서 행위..
[API] REST API (특성) 2. REST의 특성 : 위에서 REST의 기본적인 개념과 구성에 대해서 알아보았다면 REST가 가지고 있는 특성을 알아보자. 특성을 알아야 더욱 좋은 API를 설계할 수 있으며 더 좋은 개발 산출물을 만들 수 있을 것이다. 1> Uniform Interface REST는 HTTP 표준을 지원한다면 그외 어떠한 기술, 언어, OS 등..에 대한 제약을 받지 않는 인터페이스 스타일이다. 예를 들어 HTTP + JSON형식으로 REST를 정의 하였다면 개발자가 C++, Python과 같은 언어와 상관없이 해당 개발이 가능하며 iOS, Android, Window, Linux 할 것 없이 어디서든지 사용이 가능하다는 뜻이다. 이와 같은 특성으로 REST API를 사용할 경우 서비스간에 느슨한 결합 형태로 구성..