본문 바로가기

Back-end

(90)
[Spring Cloud] Messaging - SQS(Simple Queue Service) SpringBoot 프로젝트에서 SQS 메시지를 전달하고 받는 실습을 진행해보겠습니다. SQS는 AWS에서 제공하는 메시지 대기열 서비스로서 대기열(Queue)을 이용하면 메시지를 순차적으로 저장할 수 있으며 대기열에 저장된 메시지는 별로의 프로세스에서 작업을 진행할 수 있습니다. 주로 1:1 관계로 매핑되는 작업에서 많이 사용됩니다. 예를 들면 회원 가입 후 가입완료 메일 발송, 고객 주문 완료 후 배송 처리와 같이 주 프로세스가 완료된 이후 추가적으로 발생하는 작업 처리를 위해 많이 사용됩니다. 또는 서비스에 대량의 이벤트가 발생할 때 Queue를 이용하면 작업이 예약되어 처리되기 때문에 대량의 요청에서도 안정적인 시스템을 운용할 수 있게 됩니다. 참고로 동일한 메세지를 다수가 받아야 하는 (1:N)..
[AWS] SQS AWS SQS란? SQS는 Simple Queue Service의 약자입니다. 애플리케이션 간의 메시지를 전달하기 위한 아주 '간단한' Queue 라고 생각하면 됩니다. 홈페이지 설명에 따르면, 지속성이 우수하고 사용 가능한 보안 호스팅 대기열을 제공하며, dead-letter queue, 표준 대기열, FIFO 대기열을 지원하고 있습니다. SQS와 MQ의 차이점 SQS는 이름 그대로 '간단한' 큐 서비스입니다. 다른 MQ에 존재하는 message routing, fan-out, distribution lists를 지원하지 않습니다. 메시지 생산자가 만들어낸 메시지를 메시지 소비자가 가져갈 수 있게 해주는 것이 전부입니다. Amazon MQ는 AMQ나 MQTT처럼 표준화된 여러 broadcast 프토토콜..
[AWS] ElastiCache(Redis) Amazon ElastiCache는 유연한 실시간 사용 사례를 지원하는 완전관리형 인 메모리 캐싱 서비스입니다. 캐싱에 ElastiCache를 사용하면 애플리케이션 및 데이터베이스 성능을 가속화할 수 있으며, 세션 스토어, 게임 리더보드, 스트리밍 및 분석과 같이 내구성이 필요하지 않는 사용 사례에서는 기본 데이터 스토어로 사용할 수 있습니다. ElestiCache는 Redis 및 Memcached와 호환 가능합니다. 1. 애플리케이션 성능 가속화 초고속 애플리케이션 성능을 위해 마이크로초 단위의 대기 시간과 높은 처리량을 기반으로 데이터에 액세스합니다. 2. 간편한 백엔드 데이터베이스 로드 데이터를 캐싱하여 백엔드 데이터베이스에서 부담을 줄이면 애플리케이션 확장성을 개선하고 운영 부담을 줄일 수 있습니..
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. 애플리케..
[Spring] PSA (Portable Service Abstraction) PSA (Portable Service Abstraction) 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하려는 추상화 구조를 말합니다. 이는 POJO 원칙을 철저히 따른 Spring의 기능으로 Spring 에서 동작할 수 있는 Library 들은 POJO 원칙을 지키게끔 PSA 형태의 추상화가 되어 있음을 의미합니다.
[AWS] EC2 배포 https://victorydntmd.tistory.com/61