본문 바로가기

Back-end/Basic

(14)
대용량 트래픽 처리 방법 - Scale Up VS Scale Out Scale Up 서버에 CPU나 RAM 등을 추가하여 서버의 하드웨어 스펙을 향상시키는 방법 수직 확장이며, 성능 확장에 한계가 있음 Scale out 서버를 여러 대 추가하여 시스템을 증가시키는 방법 하나의 장비에서 처리하던 일을 여러 장비에 나눠서 처리함 수평 확장이며, 지속적 확장 가능 참고: https://tech.gluesys.com/blog/2020/02/17/storage_3_intro.html 번외) https://www.youtube.com/watch?v=5oTlFJ0llNw 1. 미리 준비할 수 있는 것들 HTTP 요청이 왔을 때 connection을 매번 요청할 때마다 쓰는게 아니라 keep-alive라는 설정을 써서 connection을 한번 맺어 놓고 계속 쓰는 방법 keep-al..
성능, 부하, 스트레스 테스트 성능 테스트란 시스템의 병목 지점을 찾기 위한 목적 특정 부하에서 응답성 및 안정성 측면에서, 시스템이 어떻게 동작하는지 측정하기 위한 비기능 테스트 확장성, 신뢰성 및 리소스 사용과 같은 시스템의 다른 품질 속성을 조사, 측정, 검증할 수 있음 성능 테스트 종류 부하 테스트, 스트레스 테스트, 내구성 테스트 (Endurance/Soak Testing), 최고점 부하 테스트 (Spike Testing) 서비스의 속도를 결정하는 기준은 Throughput과 Latency를 보면 알 수 있음 Throughput이란 시간당 처리량을 의미하며, TPS(Transaction Per Second), RPS(Request Per Second) 등으로 불리며, '1초에 처리하는 단위 작업의 수' 혹은 '1초에 처리하는..
TCP 3, 4-way handshake TCP 3-way handshake는 TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정 클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지 확인하는 과정입니다. SYN, ACK 패킷을 주고 받으며, 임의의 난수로 SYN 플래그를 전송하고, ACK 플래그에는 1을 더한 값을 전송합니다. 정확한 순서는 SYN(n) -> ACK(n+1) , SYN(m) -> ACK(m+1) 순으로 일어납니다. 왜 임의의 난수를 지정하는지는, 기존 요청과 구분하기 위해서 입니다. TCP 4-way handshake는 TCP 연결을 해제(Connection Termination)하는 단계입니다. FIN(finish): 세..
SEDA(Staged Event-Driven Architecture) SEDA(Staged Event-Driven Architecture)란? 단계별 이벤트 드리븐 아키텍처 큐로 연결된 스테이지에서 복잡한 이벤트 드리븐 어플리케이션을 작은 부분으로 나누는 것 스레드 기반 동시 운영 모델과 연관돼 발생할 수 있는 높은 오버헤드를 피할 수 있음 각각의 이벤트 큐로 실행함으로써, 서비스는 좋은 컨디션으로 유지가 가능함 서비스의 능력에 비해 리소스들이 과도하게 커밋되는 것을 막아주는 역할을 함 막대한 서버 접속 수요를 지원하며, 서비스 구축을 보다 간편하게 만들어 줌 SEDA에서의 최소 단위는 Queue 서버 이슈 동시에 많은 사용자에게 서비스를 제공 - 스레드 기반 모델: 개발이 용이하지만, 오버헤드가 큼 - 이벤트 기반 모델: 성능이 뛰어나지만, 프로그램의 복잡성이 높음 순간..
Kafka Streams API Kafka는 스트리밍 데이터를 다루기 위한 미들웨어와 그 주변 생태계를 말합니다. 카프카는 대규모 메시지를 저장하고 빠르게 처리하기 위해 만들어진 제품으로, 초기 사용 목적과는 다른 뛰어난 성능에 일련의 연속된 메세지인 스트림을 처리하는 데도 사용 됩니다. 이러한 스트림은 Kafka Streams API를 통해 제공합니다. 카프카 스트림즈(Kafka Streams API) 카프카 스트림즈는 카프카에 저장된 데이터를 처리하고 분석하기 위해 개발된 클라이언드 라이브러리입니다. 카프카 스트림즈는 이벤트 시간과 처리 시간을 분리해서 다루고 다양한 시간 간격 옵션을 지원하기에 실시간 분석을 간단하지만 효율적으로 진행할 수 있습니다. 카프카 스트림즈의 장점 1. 카프카와 완벽하게 호환됩니다. 2. 스케쥴링 도구가 ..
Cloud Native 란? Cloud Native란? 클라우드의 이점을 최대로 활용할 수 있도록 애플리케이션을 구축하고 실행하는 방식을 말합니다. 기존 시스템에서의 애플리케이션은 클라우드 이점을 100% 활용하지 못했다면, 마이크로 서비스 아키텍처를 채택하고 컨테이너, 쿠버네티스와 같은 기술과 도구, DevOps, 애자일 방법론 등을 도입하여 개발자 생산성, 비지니스 민첩성, 확장성, 가용성 및 비용 절감 효과를 크게 높일 수 있습니다. CNCF 정의 CNCF(Cloud Native Computing Foundation) - 퍼블릭, 프라이빗, 하이브리드 클라우드 환경에서 확장성 있는 애플리케이션을 만들고 운영할 수 있다. - 컨테이너, 서비스 메시, 마이크로 서비스, 불변의 인프라 스트럭처, 그리고 선언적 API가 전형적인 접근..
쿠버네티스(kubernetes)를 왜 쓰는가? 쿠버네티스를 사용하는 이유는 '자동화'가 가능하기 때문이라고 생각합니다. 쿠버네티스는 운영 작업 자동화가 가능하고, 배포된 애플리케이션의 지속적인 상태 확인(자동 배치, 재시작, 복제, 확장)과 셀프 복구를 수행합니다. (운영자의 모니터링 없이도 장애에 자동으로 대응할 수 있게 됨. 실패한 컨테이너를 다시 시작하고 교체하고, 응답하지 않은 컨테이너를 죽이고 서비스를 새로 준비함) 쿠버네티스의 장점은 속도가 매우 빠르고 리소스 최적화가 잘되어져 있어 원하는 자원을 필요한 양만큼 사용할 수 있어 효율적으로 개발할 수 있습니다. 쿠버네티스의 단점은 다른 도구보다 훨씬 다양한 지식이 있어야 하며 쿠버네티스 자체의 관리가 더욱 어려울 수도 있습니다. 장점 5가지 정리 1. 애플리케이션 배포의 단순화 2. 애플리케..
Jenkins 설정 https://velog.io/@sihyung92/%EC%9A%B0%EC%A0%A0%EA%B5%AC2%ED%8E%B8-%EC%A0%A0%ED%82%A8%EC%8A%A4-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EB%B0%B0%ED%8F%AC-%EC%9E%90%EB%8F%99%ED%99%94 [우젠구2편] 젠킨스 파이프라인을 활용한 배포 자동화 지속적 배포를 할 수 있는 대표적인 오픈소스 툴, 젠킨스!서버 구성을 직접해야하는 단점이 있지만, 오랫동안 사랑받아온 만큼 레퍼런스도 다양하고 플러그인도 많이 제공합니다!오늘은 젠킨스 velog.io