728x90
반응형

gRPC 4

[msa-perf-lab] REST vs gRPC 성능 비교 및 InfluxDB + Grafana 시각화

드디어 성능 테스트에 필요한 모든 환경을 구축하고, 실제 테스트까지 해 보았다.트래픽 발생은 JS k6라이브러리를 활용했고, 시계열 데이터를 InfluxDB에 담아 Grafana와 연동해 시각화했다. InfluxDB + Grafana 컨테이너화 InfluxDB와 Grafana를 컨테이너로 올렸다. Docker에 준비된 이미지를 받아와 띄우고 기본 세팅만 하면 되기 때문에 크게 어렵진 않았다.기존 컨테이너 (Flask + Go(Gin) + PostgreSQL)와 하나의 compose 파일로 묶을까 했지만, 네트워크는 공유하되 테스트용 컨테이너는 분리해 관리하는 것이 나을 것 같아 따로 구성했다. InfluxDB, Grafana 세팅은 크게 건드린 건 없고 최대한 가볍게 띄웠다. 모든 컨테이너가 띄워졌다...

[msa-perf-lab] Flask <-> Go(Gin) gRPC 환경 세팅 및 내부 gRPC 통신 테스트

저번 글에서 Flask + PostgreSQL 환경 세팅 및 docker-compose 컨테이너화 까지 진행했었다.이번 글에서는 Go 서버 구현은 넘어가고, Flask Go gRPC 환경 세팅에 대한 내용을 다룰 것이다. 디렉터리 구조 우선 디렉터리 구조를 좀 손봤다. 작은 프로젝트가 될 거라서 구조는 신경쓰지 않으려고 했는데, 플라스크 기준으로 3가지 통신 방식이 있었다. 1. Flask가 요청 받고 직접 응답 (internal)2. Flask가 요청 받고 Go에게 Rest로 전달 (rest)3. Flask가 요청 받고 Go에게 gRPC로 전달 (grpc) 아직 제대로 시작도 안 했는데 벌써 복잡해져서, 아예 초반에 디렉터리 구조를 잡아버렸다.그나마 다행인 건, gRPC 서버(Go)에서는 gRPC ..

[msa-perf-lab] Flask & PostgreSQL 개발환경 세팅 및 컨테이너화, docker-compose 그룹화

Flask, PostgreSQL 서버를 띄우고 연동한 후, DockerFile 작성 및 docker-compose로 그룹화했다. 디렉터리 구조 이번 프로젝트는 MSA 아키텍처 및 백엔드 고급 기술들의 성능 측정이 목표이기 때문에, OOP 원칙을 철저히 준수한다거나 프로젝트 구조를 짠다거나 하는 건 전부 패스했다. 사실 코드가 그렇게 많지도 않을 것이다. 프로젝트가 마무리 되면, 디렉터리 구조를 조금 정리하려고 한다. flask-gateway는 플라스크 서버가 저장되는데, 이름 그대로 클라이언트의 요청을 직접 받는 gateway 역할을 수행할 것이다. go-core엔 Go(Gin) 서버가 담길 것이고 이름 그대로 core engine 역할을 맡아 성능 병목이 예상되는 복잡한 연산을 맡을 것이다. doc..

[msa-perf-lab] MSA 성능 실험 프로젝트 - Flask & Go(Gin)

프로젝트 개요Flask + Go(Gin) 기반 MSA 아키텍처 성능 실험 프로젝트를 시작한다. 서비스 목적이 아닌 성능 개선 및 측정/검증 프로젝트이며 UI/UX, 도메인, 비즈니스 로직 등을 철저히 제외하고 백엔드 고급 기술 + 성능 개선 및 측정에 목표를 둔다. 프로젝트 목적- 이력서 & 포트폴리오 업그레이드 및 개인 실력 향상 주요 내용- Flask & Go(Gin) MSA 아키텍처 설계 및 구현- Flask & Go(Gin) 서버 간 Rest/gRPC 성능 측정- Flask 단일 vs Flask & Go 성능 측정 (CPU 집약적 연산, 외부 API 호출, 대용량 데이터 처리 등)- Docker/Docker compose 활용한 컨테이너 그룹화 및 Kubernetes 연동 컨테이너 오케스트레이션-..

728x90
반응형