본문 바로가기

분류 전체보기

(133)
[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. 애플리케..
[Codility] PermMissingElem - Java 1. 정렬한 뒤 앞 뒤 값 비교해서 같지 않으면 i+1 반환 2. 다 돌았는데도 조건 처리 되지 않으면 최종 a.length + 1 반환 * 이렇게도 처리 가능 ((1+(a.length+1)) * (a.length + 1)) / 2 - sum(a) = 없는 값 https://app.codility.com/demo/results/training78ZKG6-HRT/ Test results - Codility An array A consisting of N different integers is given. The array contains integers in the range [1..(N + 1)], which means that exactly one element is missing. Your goal ..
#4 [2021 UPDATE] PROPS #4.0 Props 분할, 정복 로직을 고립시켜서 분리된 컴포넌트로 만든다! 부모 컴포넌트는 App Props는 일종의 방식으로 부모 컴포넌트로부터 자식 컴포넌트에 데이터를 전송하는 방식. 부모에 props를 사용하면 자식 컴포넌트(함수)의 인자로 객체가 들어가게 됨 하나의 버튼을 props을 이용해 재사용함! component는 단지 function(함수) 으로 JSX 반환함 => 함수형 컴포넌트 property => object로 모두 들어간다! function Btn({text}) { // props는 object // shortcut (props -> {text, onClick}) 변경! return ( {text} ); } function App() { // 컴포넌트 // JSX의 내부 cons..