전체 글
-
데이터베이스 샤딩내일배움캠프 Spring 심화 1기/TIL 2024. 8. 18. 23:28
데이터베이스 샤딩데이터베이스 샤딩은 대규모 데이터베이스를 여러 머신에 저장하는 프로세스입니다. 단일 머신 또는 데이터베이스 서버는 제한된 양의 데이터만 저장하고 처리할 수 있습니다. 데이터베이스 샤딩은 데이터를 샤드라고 하는 더 작은 청크로 분할하고 여러 데이터베이스 서버에 저장함으로써 이러한 한계를 극복합니다. 모든 데이터베이스 서버의 기본 기술은 일반적으로 동일하며 함께 작동하여 대량의 데이터를 저장하고 처리합니다. 왜 샤딩을 사용해야 하는가데이터 볼륨이 너무 커지고 어플리케이션을 사용하여 동시에 정보를 읽고 쓰려는 사용자가 많아지면 데이터베이스에서 병목 현상이 발생합니다. 이로 인해 어플리케이션 속도가 느려지고 고객 경험에 안좋은 영향을 미치게 됩니다. 여러 샤드에서 더 작은 데이터 세트를 병렬로 ..
-
Apache JMeter (JMeter)내일배움캠프 Spring 심화 1기/TIL 2024. 8. 14. 15:21
JMeter성능 테스트와 부하 테스트를 수행하기 위한 오픈 소스 소프트웨어 도구입니다. 웹 어플리케이션, 웹 서버, 데이터베이스 서버, FTP 서버 등을 테스트할 때 사용됩니다. 특징성능테스트웹 어플리케이션이나 다른 서비스의 성능을 측정하고 분석하는 데 사용됩니다. 예를 들어, 특정 서버에 동시에 여러 사용자가 접속했을 때 얼마나 잘 작동하는지, 응답 시간이 얼마나 되는지를 테스트할 수 있습니다.부하 테스트시스템이 높은 부하 상태에서도 안정적으로 작동하는지 확인하기 위해 JMeter를 사용하여 여러 사용자의 요청을 동시에 시뮬레이션할 수 있습니다. 이를 통해 병목 현상이나 성능 저하를 발견하고 개선할 수 있습니다.다양한 프로토콜 지원HTTP, HTTPS, SOAP, REST, FTP, JDBC(데이터베이..
-
Apache Kafka내일배움캠프 Spring 심화 1기/TIL 2024. 8. 13. 23:58
Apache Kafka대규모 데이터 스트림을 처리하기 위한 분산 메시지 큐 시스템입니다. 이벤트 스트리밍 아키텍쳐와 함께 사용하여 데이터 파이프라인을 구축하고 이벤트를 실시간으로 처리합니다. 구성 요소메시지(Message)메시지는 Kafka를 통해 전달되는 데이터 단위입니다. 예를 들어, 로그 데이터나 이벤트 데이터가 메시지가 될 수 있습니다.메시지는 키(key), 값(value), 타임스탬프(timestamp), 그리고 몇 가지 메타데이터로 구성됩니다.생산자(Producer)메시지를 생성하고 Kafka에 보내는 역할을 합니다. 예를 들어, 웹 애플리케이션이 로그 데이터를 Kafka에 보내는 경우 생산자가 됩니다.생산자는 특정 토픽(topic)에 메시지를 보냅니다.소비자(Consumer)토픽에서 메시지를..
-
CQRS (Command Query Responsibility Segregation)내일배움캠프 Spring 심화 1기/TIL 2024. 8. 13. 21:44
CQRSCQRS는 명령과 조회의 책임을 분리하는 소프트웨어 디자인 패턴입니다. 읽기 작업과 쓰기 작업을 서로 다른 모델로 분리하여 각 작업에 최적화된 구조를 사용할 수 있게 합니다. 시스템의 성능, 확장성, 유지보수성을 향상시키는데 도움이 됩니다. 장점성능 향상읽기와 쓰기를 분리하여 각 작업에 최적화된 데이터 저장소와 인프라를 사용할 수 있습니다. 예를 들어, 조회 성능을 높이기 위해 읽기 전용 데이터베이스를 사용하거나, 캐시를 활용할 수 있습니다.확장성읽기와 쓰기를 독립적으로 확장할 수 있습니다. 예를 들어, 읽기 요청이 많은 경우 조회 모델을 수평으로 확장하여 부하를 분산시킬 수 있습니다.유지보수성비즈니스 로직이 명령 모델에 집중되므로, 복잡한 상태 변경 로직을 관리하기 쉽습니다. 또한, 읽기 모델은..
-
Amazon ECS (Amazon Elastic Container Service)내일배움캠프 Spring 심화 1기/TIL 2024. 8. 9. 17:33
Amazon ECSECS는 컨테이너화된 어플리케이션을 더 효율적으로 배포, 관리하고 규모를 조정하는 데 도움이 되는 완전관리형 컨테이너 오케스트레이션 서비스입니다. AWS, Amazon ECR, Docker 등의 서드 파티 도구와 통합할 수 있으며 이를 통해 환경이 아닌 어플리케이션 구축에 더욱 집중할 수 있습니다. Amazon ECS를 사용해야 하는 이유쿠버네티스보다 사용하기 쉽고 비용적으로도 저렴하기 때문에 중소 규모의 프로젝트에서 사용하기 적합합니다.Serverless로 구성할 수도 있어 인스턴스를 구성하과 관리할 필요가 없습니다.구조ECR: Docker image 저장소 입니다.ECS Cluster: 컨테이너를 실행하기 위한 Cluster로 여러 인스턴스로 이루어집니다. 이 인스턴스에 Docker..
-
쿠버네티스 (Kubernetes, K8s)내일배움캠프 Spring 심화 1기/TIL 2024. 8. 8. 10:43
쿠버네티스컨테이너화된 어플리케이션의 자동 배포, 스케일링 등을 제공하는 오픈 소스 기반의 컨테이너 관리 시스템입니다. 여러 클러스터 호스트 간에 어플리케이션 컨테이너의 배치, 스케일링, 운영을 자동화하기 위해 생겨났습니다. 쿠버네티스가 필요한 이유쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 제공하여 어플리케이션의 확장과 장애 조치를 처리하고, 배포 패턴 등을 제공합니다.서비스 디스커버리와 로드 밸런싱쿠버네티스는 DNS 이름을 사용하거나 자체 IP주소를 사용하여 컨테이너를 노출할 수 있습니다. 컨테이너에 대한 트래픽이 많으면, 쿠버네티스는 네트워크 트래픽을 로드밸런싱하고 배포하여 배포가 안정적으로 이루어 질 수 있게 합니다.스토리지 오케스트레이션쿠버네티스를 사용하면 로컬 저장소, 공용..
-
분산추적내일배움캠프 Spring 심화 1기/TIL 2024. 8. 7. 23:52
분산추적분산추적은 분산 시스템에서 서비스 간의 요청 흐름을 추적하고 모니터링하는 방법입니다. 각 서비스의 호출 관계와 성능을 시각화하여 문제를 진단하고 해결할 수 있도록 돕습니다. 주요 개념으로는 트레이스, 스팬, 컨텍스트가 있습니다.트레이스(Trace) : 트레이스는 하나의 요청이 시작부터 끝까지 각 서비스를 거치는 전체 흐름을 나타냅니다.하나의 트레이스는 여러 개의 스팬으로 구성됩니다.분산 시스템에서 클라이언트의 요청이 여러 서비스로 전달될 때 각 서비스 호출이 트레이스의 일부로 기록됩니다.트레이스 ID는 각 스팬에 공통으로 부여되며 이를 통해 전체 요청 흐름을 추적할 수 있습니다.스팬(Span) : 스팬은 분산 추적에서 가장 작은 단위로 특정 서비스 내에서의 개별 작업 또는 요청을 나타냅니다.각 스..
-
레디스 (Redis)내일배움캠프 Spring 심화 1기/TIL 2024. 8. 6. 21:16
레디스레디스는 오픈 소스 기반의 인메모리 데이터 구조 저장소이자 데이터베이스입니다. 레디스는 다양한 인메모리 데이터 구조 집합을 제공하므로 다양한 사용자 정의 어플리케이션을 손쉽게 생성할 수 있습니다. 레디스의 주요 사용 사례는 캐싱, 세션 관리, pub/sub 및 순위표가 있습니다. 레디스는 현재 가장 인기 있는 키 값 스토어로서 다양한 개발 언어를 지원합니다.레디스는 속도가 빠르고 사용이 간편하여 최고의 성능이 필요한 웹, 모바일, 게임, 광고 기술 및 IoT 어플리케이션에 널리 사용되고있습니다.빠른 데이터 접근과 처리 속도를 제공하며 다양한 데이터 구조와 명령어를 지원합니다. 다양한 언어와 프레임워크에서 사용할 수 있으며, 분산 시스템에서도 활용할 수 있습니다. 레디스의 특징빠른 처리 속도인메모리 ..