분류 전체보기 13

실시간의 실시간(구현) - Amazon Kinesis Data Streams 활용 실시간 랭킹 기능 구현

1. 아키텍처 설계수정 전 무지성 기획사실 가장 처음 생각했던 방법은 DB를 활용한 방법이었습니다. 그나마 효율적인 방법을 고려해보고자 RDS의 구매내역 데이터를 생성할 때 복합키(시계열 & 아이템ID)로 DynamoDB에 Count하는 방식이었습니다. 굳이 db를 나눈 이유는 조회한 데이터를 쿼리만 하는 DB를 분리하여 I/O연산과 쿼리연산을 최소할 수 있지 않을까 생각했기 때문입니다. 그렇게 전체적인 흐름은 아래 그림과 같게 구현되었습니다. 이에 따라 정상적인 요청이 들어왔을 때 5분마다 다른 랭킹 화면을 볼 수 있게 됩니다. DB 연산하지만 그럼에도 대규모 트래픽을 고려하면, DB 부하와 DynamoDB 비용 등등 5분마다 업데이트 되는 데이터는 로그 활용됨이 맞다고 생각했습니다. 수정 전 예상 비..

카테고리 없음 2024.10.09

Terraform으로 EKS 구축하기

Terraform은 클라우드 및 온프레미스 리소스를 안전하고 효율적으로 빌드, 변경 및 버전 관리할 수 있는 인프라 코드 도구입니다.Terraform은 애플리케이션 프로그래밍 인터페이스(API)를 통해 클라우드 플랫폼 및 기타 서비스에서 리소스를 생성하고 관리합니다. 공급자는 Terraform이 액세스 가능한 API를 통해 사실상 모든 플랫폼이나 서비스와 함께 작업할 수 있도록 합니다.테라폼을 통해 인프라를 구축하는 과정을 자동화할 수 있습니다.테라폼으로 eks까지 구축하는 과정은 다음과 같습니다. 1. Terraform 설치2. AWS 인증3. VPC 설정4. EC2 설정5. SSM 설정6. EKS 설정 1. Terraform 설치먼저 테라폼부터 설치해보겠습니다.AMD64(64비트)를 다운받고, 이 파..

카테고리 없음 2024.08.29

DR

DR (재해 복구)는 자연재해나 인간의 행동 (또는 실수)으로 인한 재해가 발생한 후 조직에서 IT 인프라에 대한 액세스 및 기능을 복원할 수 있는 기능을 말합니다. 우선 RTO (복구 시간 목표)와 RPO (복구 지점 목표)를 알아야 합니다.RTO는 재해가 발생한 후 정상 성능으로 서비스가 되돌아오기까지 걸리는 시간입니다.RPO는 재해 발생 시점부터 복구할 수 있는 가장 최근의 시간을 얘기합니다 (백업한 시간). 저는 아래의 복구 전략 중 Backup & Restore에 집중했습니다.  저희는 백업 전략을 두 가지로 구성하였습니다.첫 번째는 스토리지, DB에 대한 백업입니다.  현재 사용하는 리전에서 다른 리전으로 데이터만 복제해놓는 방법을 사용했습니다.두 번째는 EKS 데이터에 대한 백업입니다. EK..

카테고리 없음 2024.08.26

실시간의 실시간(비즈니스 차별화 전략)

1. 요구사항 정의썸네일과 같이 올리브영의 현재 시스템 중에는 실시간 랭킹이라는 기능이 있습니다. 이는 앱에서만 지원하는 기능인 것으로 확인이 됩니다(아마도..!) 해당 기능은 현재 어떤 상품이 인기가 있는 지 보여주는 역할을 합니다. 하지만 이 기능을 보면 볼수록 한가지 의의한 부분이 있었습니다. 바로 실시간이라고 하지만 사실 그 랭킹은 몇 시간 전에 업데이트 된 랭킹일 수 있다는 점이었습니다. 저는 실시간이라는 키워드와 2시간 전 업데이트라는 키워드가 이중적이라고 생각했습니다. 그렇다면 올리브영은 왜 몇 시간 전 상품에도 실시간이라는 키워드를 넣어야만 했을까요?출처: 넷플릭스 흑백요리사 제가 생각하기에 실시간이라는 키워드가 꽤나 매력적이었을 것이라 생각합니다. 그렇다고 리얼타임으로 기능을 제공한다면 ..

카테고리 없음 2024.08.26

PLG 스택을 이용한 모니터링 (Prometheus, Loki, Grafana)

안녕하세요이번 글에서는 PLG 스택의 주요 기능과 장점에 대해 살펴본 후, 각 구성 요소를 설치하고 설정하는 방법을 단계별로 안내해드리겠습니다.   PLG 스택은 Prometheus, Loki, Grafana로 구성된 모니터링 및 로깅 솔루션으로, Kubernetes와 같은 컨테이너화된 환경에서 특히 유용하게 사용됩니다.Kubernetes에서는 기본적으로 로그가 각 Pod의 생명주기 동안만 유지됩니다. 이는 Pod가 삭제되거나 재시작되면 로그 데이터가 사라질 수 있다는 것을 의미합니다. 이러한 문제를 해결하기 위해 로그 데이터를 중앙에서 관리하고 보관하는 솔루션이 필요합니다.   Promtail은 Kubernetes 환경에서 각 파드의 로그 데이터를 수집하여 Loki로 전송하는 역할을 합니다. Promt..

카테고리 없음 2024.08.24

Prometheus, Grafana를 이용한 모니터링

안녕하세요.오늘은 모니터링 스택에서 중요한 역할을 하는 Prometheus와 Grafana에 대해 소개해드리겠습니다. Prometheus는 시스템의 메트릭을 수집하고 저장하는 데 사용되며,Grafana는 이 데이터를 시각화하여 모니터링할 수 있도록 도와줍니다. 이 글에서는 Prometheus와 Grafana의 주요 기능을 살펴보고, 제가 구성한 Grafana 대시보드를 분석해보겠습니다.      다음은 Kubernetes 환경에서의 Prometheus와 Grafana의 구성 요소들을 나타낸 그림입니다. 각 Worker Node에서 Node Exporter는 CPU, 메모리, 디스크 사용량 등 시스템 자원에 대한 메트릭을 수집합니다. Prometheus는 이 메트릭들을 주기적으로 스크랩하여 이를 기반으로 ..

Monitoring 2024.08.21

정적 웹 호스팅 (AWS Route53-CloudFront-S3 연결까지)

안녕하세요이번에 제가 소개할 내용은 정적 웹 호스팅에 관한 이야기입니다.이 글에서는 정적 웹 호스팅의 개념부터 AWS를 활용한 구현 방법까지 자세히 살펴보겠습니다.  저희가 사용할 웹 사이트는 주로 HTML, CSS, 및 JavaScript 파일로 구성되어 서버 측에서 동적인 처리가 필요하지 않습니다. 따라서 정적 웹 호스팅을 하는 것이 비용 효율적이며, 서버 관리의 부담을 줄일 수 있습니다.또한, 정적 웹 호스팅은 보안이 강화된 환경을 제공하여 데이터 유출의 위험을 최소화하고, 빠른 로딩 속도를 통해 사용자 경험을 향상시킬 수 있습니다.이러한 이유로, 우리 프로젝트의 요구사항에 가장 적합한 호스팅 방식이라고 할 수 있습니다.  정적 웹 호스팅을 하기 위해서는정적 파일을 호스팅할 웹 서버가 필요합니다 →..

카테고리 없음 2024.08.21

Locust 부하테스트 세팅

Locust란이 기술은 무슨 기술인지오픈 소스 부하 테스트 도구로 웹 응용 프로그램이나 서비스의 성능과 부하를 측정하는 데 사용사용자 시나리오를 정의하여 가상 사용자들이 웹 서비스에 대한 요청을 보내고 동시에 사용자 수와 부하를 조절할 수 있음.부하테스트를 왜 해야할까부하 테스트는 시스템이 실제 운영 환경에서 예상되는 최대 부하를 처리할 수 있는지를 평가함.시스템의 성능 저하 지점과 한계를 파악할 수 있어서 시스템의 확장성과 안정성을 보장하는 데 중요한 역할을 함.예상치 못한 트래픽 증가에도 안정적으로 동작해야 하기 때문에 시스템의 신뢰성을 높이고 잠재적인 성능 문제를 사전에 해결하는 데 필수적인 과정임.웹 애플리케이션의 장점은 여러 사용자가 동시에 시스템 리소스에 액세스 할 수 있다는 것임.(동시에 서..

카테고리 없음 2024.08.21

[Kubernetes] Ingress의 개념 및 활용

이번 포스팅에서는 Ingress가 무엇이고 우리 서비스에서 어떻게 활용되었는 지 전반적인 내용을 공유드리고자 합니다.요구사항 정의요구사항에 앞서 Ingress를 적용하기 전에 우리의 사전 진행 상황에 대해 간단하게 짚고 넘어가겠습니다. 우리 팀은 eks 클러스터를 CLI에서 구축하여 노드그룹을 생성하였고, 해당 클러스터 내부에서 여러가지 작업들을 진행하며 각각의 역할을 수행하는 컨테이너 환경을 구축하였습니다.-> 이 지점에서 해당 포스팅을 쓰게 된 계기가 등장합니다.우리의 목적은 이렇게 생성된 Pod들에 접근하는 것이었습니다.  위 스크린샷은 예시로 가져온 nginx Pod 입니다. Pod는 생성될 때 nginx pod처럼 고유의 IP를 갖게 됩니다.그럼 이 IP로 통신하면 문제는 해결될까요? 당연하게도..

카테고리 없음 2024.08.21

AWS VPC 구축

AWS VPC는 Virtual Private Cloud의 약자로 가상 네트워크 환경이라고 볼 수 있습니다. VPC에서 네트환경 구축하는 방법을 크게 4가지로 말하겠습니다.VPC 생성서브넷 생성인터넷 게이트웨이 / 라우팅 테이블 설정NAT 게이트웨이 생성 / 라우팅 테이블 설정1. 여기서는 먼저 리전을 정해야 합니다. 저는 us-east-1(버지니아 북부)를 선택했습니다.    그리고 대규모 네트워크를 사용하기 위해 IPv4 CIDR은 A클래스 네트워크인 10.0.0.0/16을 선택했습니다.  2. 서브넷은 각 가용 영역 마다 1개의 퍼블릭 서브넷, 1개의 프라이빗 서브넷을 만들어 주었습니다.    us-east-1a > 퍼블릭: 10.0.0.0/24             프라이빗: 10.0.1.0/24 ..

카테고리 없음 2024.08.18