전체 글 101

AWS 환경에서 Data Streaming으로 어떤 것을 선택할까? Kinesis vs MSK

웹 서핑을 하다, 이 포스팅의 주제로 좋은 비교를 한 사이트를 찾았습니다. https://programmaticponderings.com/2023/04/23/streaming-data-on-aws-amazon-kinesis-data-streams-or-amazon-msk/ Streaming Data on AWS: Amazon Kinesis Data Streams or Amazon MSK? Given similar functionality, what differences make one AWS-managed streaming service a better choice over the other? Kinesis Data Streams and Amazon MSK can often be used intercha..

RDS Custom for ORACLE를 사용해보자!

배경 On-Premise에 운영 라이센스를 구입해 운영중이던 Oracle을 AWS 환경으로 그대로 가져올 경우가 있습니다. 이런 경우 Oracle 라이센스를 AWS에서 그대로 사용할 수 있는데(BYOL: Bring Your Own License) 이 경우 EC2 환경에서 설치해야 했습니다. AWS에서는 기존에 사용하던 라이센스를 AWS가 Managed 해주는 RDS 환경에서 사용할 수 있도록 RDS Custom for Oracle(Custom Engine Version)을 지난 2021년 10월 처음으로 선보였습니다. 하지만 좀처럼 서울 리전에서는 해당 기능을 사용할 수 없었는데요, 2022년 12월 21일을 기준으로 마침내 서울리전에서도 RDS Custom for Oracle 버전을 사용할 수 있게 되..

Cloud Service/AWS 2023.07.13

Bastion 없이 Private Subnet의 EC2에 접속해보자!

배경 최근들어 Public Subnet에 대한 보안이 강화되고 있습니다. 얼마전까지만 해도 Public Subnet의 Bastion Host를 이용해 Private Subnet의 EC2에 접속해 서비스들을 관리하던 것들이 이제는 시큐리티 거버넌스에 의해 이를 금지하는 회사들이 점점 늘어나고 있습니다. 이번 포스팅은 Public Subnet에 Bastion Host 설치 없이 Private Subnet에 설치된 EC2 인스턴스에 SSM(System Manager)을 통해 접속해 Security Issue를 최소화 하는 방법에 대해 알아봅니다. SSM을 통한 Private Subnet의 EC2 접속 SSM 실습을 위한 테스트 VPC 생성 실습을 위한 VPC를 생성해 보도록 하겠습니다. AWS Admin C..

Cloud Service/AWS 2023.06.07

Spring Boot, Kafka(Amazon MSK)를 이용한 Event Driven Architecture 예

시작에 앞서 이 포스팅 글은 제가 SA로 재직하면서 개인적으로 만든 AWS Workshop을 기반으로 작성되었습니다. 이 포스팅에서 언급되는 워크샵이라는 단어는 '실습' 정도로 해석하시면 됩니다. Introduction MSA(Micro Service Architecture)를 Loose Coupling하게 구축하기 위해 꼭 필요한 EDA(Event Driven Architecture)를 Amazon MSK와 Java로 실습해 보면서 이해하는 워크샵입니다. 시나리오 EDA(Event Driven Architecture) 워크샵에서 사용할 서비스는 고객(Customer)와 주문(Order) 2개의 서비스로 구성되어 있으며 신규 고객을 등록할때 이름(Name)과 그 고객이 사용수 있는 선지불금(Credit)..

AWS DynamoDB Spring Boot CRUD 예제

서론 AWS의 대표적인 NoSQL 서비스인 DynamoDB를 Spring Boot로 CRUD 조작 하는 예제를 작성해 보았습니다. 개인 PC에서 개발을 할 경우 물론 credential을 이용해 개인 PC에서 AWS 클라우드 상에 있는 DynamoDB를 직접 조작해 볼 수 있겠지만 본 예제에서는 빠른 실행을 위해 아래의 링크에 설명된 로컬 PC 설치 버전의 DynamoDB를 이용한 예제를 설명드립니다. 로컬 버전의 DynamoDB 설치를 하지 않으신 분들은 아래의 링크를 이용해 테스해 보시기를 권장드립니다. 개인 PC에 DynamoDB를 설치해 테스트 해보자 서론 AWS의 DynamoDB는 AWS의 대표적인 NoSQL Database입니다. 이번 장에서는 Java를 가지고 DynamoDB를 Local환경..

Cloud Service/AWS 2023.01.11

개인 PC에 DynamoDB를 설치해 테스트 해보자

서론 AWS의 DynamoDB는 AWS의 대표적인 NoSQL Database입니다. 이번 장에서는 Java를 가지고 DynamoDB를 Local환경에서 개발 및 테스트 해보는 것을 알아 보도록 하겠습니다. 이번 포스팅을 따라해보기 위해서는 먼저 사용하는 PC 환경에서 AWS CLI가 설치되어 있어야 하며 본인 소유의 AWS 계정(Account)와 Access Key ID, 그리고 Security Credentials(보안 자격 증명)이 필요합니다. AWS CLI에 대한 설치는 여기를 클릭하셔서 본인의 운영체제에 맞는 버전의 AWS CLI를 설치하시기 바라며, Access Key ID와 Security Credentials을 본인 PC에 환경 구성하기 위해서는 여기를 클릭하셔서 따라하시기 바랍니다. 이번 ..

Cloud Service/AWS 2023.01.04

MSA 그리고 분산 어플리케이션 기술 비교

기업의 아키텍처를 담당하는 담당자 분들을 만나 이야기 하다 보면 많은 분들이 과거 분산 아키텍처는 계속해서 실패했다는 이야기를 하곤 합니다. 이에 과거 분산 아키텍처 기술과 MSA를 비교하는 표를 만들어 보았습니다. 개인적으로 MSA는 클라우드 시대 어플리케이션을 구성하는 기본 아키텍처가 될 것이라고 봅니다. 이 표에는 그간의 분산 어플리케이션 아키텍처가 왜 실패했었는지도 기술했습니다. RPC CORBA EJB SOA MSA 시기 •1980년대 중후반 •1990년대 초반 •2000년대 초반 •2000년대 중반 •2010년대 중반 특징 •가장 오래된 프로세스간 통신 방식 •원격의 프로시저를 로컬에서 동작 •OMG그룹에서 표준 정의 •로컬/원격 객체 간 메소드 호출 표준 규격 •다양한 언어를 지원 •원격 자..

AWS/Azure/Google Cloud 서비스 비교 2022.10

소개 AWS 홈페이지에 소개된 서비스 목록을 기반으로 다른 클라우드 서비스 제공사 들의 해당 서비스를 찾아 맵핑 했습니다. AWS에서는 제공하지 않지만 다른 클라우드(Azure/GCP)에서는 제공하는 서비스가 누락 되었을 수 있습니다. 주관적인 내용이 포함되어 있습니다. 공식적인 자료로 사용하실때는 신중해지실 필요가 있습니다. Outpost, EKS Anyware 같은 장치 및 SDK와 같은 개발 도구는 나열되어 있지 않습니다. Analytics AWS/Azure/GCP 데이터레이크 쿼리 Amazon Athena Azure Synapse Analytics/Azure Data Lake Analytics BigQuery 검색 Amazon CloudSearch Azure Cognitive Search - Ha..

Cloud Service 2022.09.26

Amazon MSK - 보상 트랜잭션 예

개요 이번 포스팅은 Choreography 기반의 Saga 패턴을 실습해 보기 위해 구성되었으며 Spring Boot와 AWS의 MSK(Managed Streaming for apache Kafka) 기반으로 구성되었습니다. 아키텍처 빠른 예제와 비용 최적화를 위해 1개의 EC2 인스턴스에서 2개의 서비스(Spring Boot 기반)를 서로 다른 포트로 실행시켜 두대의 서버에서 운영하는 방식으로 예제를 구성했습니다. Amazon MSK(Managed Streaming service for apache Kafka)는 2대의 브로커를 구성할 예정입니다. 유즈케이스 다이어그램 두대로 구성되는 스프링 부트 서비스는 Customer와 Order로 구성되어 있습니다. - 커스터머는 등록시 이름과 CreditLimi..

MSA, EDA 그리고 Event Sourcing 의 이해

마이크로서비스 아키텍처 마이크로서비스(Microservice)란, 하나의 큰 애플리케이션을 여러 개의 다른 역할을 수행하는 애플리케이션으로 분리하였을 때 각 애플리케이션을 의미하며, 이렇게 마이크로서비스를 분리하여 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처를 마이크로서비스 아키텍처라고 말합니다. 애플리케이션을 특화된 기능별로 나누게 되면 자연스럽게 애플리케이션의 추상화(abstraction)가 가능해집니다. 다시 말해, ‘인증’을 담당하는 서비스(예, auth.example.com)는 그 구체적인 구현 내용을 모르더라도 다른 서비스에서 약속된 인터페이스를 이용해 인증 과정을 수행할 수 있습니다. 또한, 검색창의 ‘자동완성’을 담당하는 서비스(예, autocomplete..

카테고리 없음 2022.06.07

Kafka 파티션

파티션에 대해 공부하기 전에, 카프카에서 사용되는 몇 가지 개념과 그것들이 파티션과 어떻게 연관이 있는지를 알아보자. Events 이벤트란, 과거에 일어난 사실을 뜻한다. 이벤트는 발생함으로 인해 변화된 상태를 가지고 시스템 사이를 오가는, 불변하는 데이터이다. Streams 이벤트 스트림이란, 관련된 이벤트들을 뜻한다. Topics 이벤트 스트림이 카프카에서는 토픽이란 이름으로 저장된다. 카프카의 세계에서는 토픽이 구체화된 이벤트 스트림을 뜻한다. 토픽은 연관된 이벤트들을 묶어 영속화하는데, 이는 데이터베이스의 테이블이나 파일 시스템의 폴더들에 비유할 수 있다. 토픽은 카프카에서 Producer 와 Consumer 를 분리하는 중요한 컨셉이다. Producer 는 카프카의 토픽에 메시지를 저장 (Pus..

AWS CodeBuild로 EKS에 배포해 보자

개요 현재까지(22년 4월) AWS의 CodeDeploy는 EKS 배포를 지원하지 않는다. 따라서 명령어 기반 build 툴인 CodeBuild를 통해서 배포를 하던지 별도의 서드파티 제품과 연동해야 EKS 배포가 가능하다. 여기서는 CodeBuild를 통해서 EKS배포를 하는 방법에 대해 알아 보겠다. * 이 예제를 성공적으로 따라해 보기 위해서는 AWS의 CodeCommit이 구성되어 있어야 하며, ECR, EKS등 이미 배포 환경이 만들어져 있어야 한다. 다만 CodeBuild의 작동 방식만 참조를 할때는 해당 구성이 없다고 하더라도 상관없다. 파이프라인 구성할 파이프라인은 아래의 아키텍처에서 볼 수 있듯이 AWS Code Series로 구성할 예정이며 파이프라인 관리 -> CodePipeline,..

K8S HPA(Horizontal Pod Autoscaling) 적용

개요 HPA(Horizontal Pod Autoscaling)는 K8S 노드 내부의 Pod의 레플리카 확장을 의미한다. CPU 사용량에 따라 배포된 파드의 복제를 지정해 서비스가 원활하게 작동할 수 있도록 하는데 그 목표가 있다.(이는 추후에 설명할 워크노드의 인스턴스를 늘리는 Instance Autoscaling 과는 다르다.) 적용 순서(AWS EKS 기준) 1. 쿠버네티스 metrics server를 생성한다. Metrics Server는 쿠버네티스 클러스터 전체의 리소스 사용 데이터를 집계한다. 각 워커 노드에 설치된 kubelet을 통해서 워커 노드나 컨테이너의 CPU 및 메모리 사용량 같은 메트릭을 수집한다. kubectl apply -f https://github.com/kubernetes-..

AWS EKS 관리를 위한 Amazon EC2 구성시 문제 해결

kubectl 명령어 발행시 localhost:8080 접속이 불가능하는 에러가 나온다면? [ec2-user@ip-192-168-44-40 ~]$ kubectl get nodes The connection to the server localhost:8080 was refused - did you specify the right host or port? aws eks 명령어로 kubernetes 접속 환경을 변경하는 것이 필요 aws eks --region [사용하는 리전명] update-kubeconfig --name [EKS CLUSTER이름]

Kafka 설정 - 포인트만

Partion 개수 >= Consumer 인스턴스의 개수 전달 보증 - 요구사항에 따라 적절하게 조절 At Most Once : 재전송 유무 X, 중복 삭제 유무 X At Least Once : 재전송 유무 O, 중복 삭제 유무 X Eactly Once : 재전송 유무 O, 중복 삭제 유무 O Offset Commit : 요구사항에 따라 적절하게 조절 Auto Offset Commit Manual Offset Commit commitSync commitAsync Offset은 Consumer Group 별로 관리된다. 하나의 메시지를 다른 Consumer Group에서 똑같은 값을 Consume 가능, 하지만 같은 Consumer Group 내에서는 오직 한번만 가능 Producer 처리방식 동기 비동기..

AWS EKS Workshop 진행시 자주 발생하는 에러 및 처리

개요 AWS상에서 EKS를 구성하고 실습해 보는 교재 중 최고는 개인적으로 "AWS EKS 워크샵 스튜디오"라고 생각한다. 다만 이 워크샵을 그대로 따라 진행한다고 해도 예상치 못하는 몇몇 문제를 만나곤 하는데 이 포스팅은 진행시 만날 수 있는 에러에 대해 해결방법을 정리한 것이다. Workshop Studio catalog.us-east-1.prod.workshops.aws aws의 eks-workshop을 따라하다가 아래와 같이 AWS콘솔에서 EKS노드를 보기위해 권한을 주는 작업인 assumedrolename 명령어 수행시 " An error occurred (ValidationError) when calling the GetRole operation: The specified value for r..

ubuntu에 docker 설치 및 삭제하기

설치 apt-get update sudo apt-get update apt가 https를 통해 repository를 사용할 수 있도록 패키지 설치 sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release Docker 공식 GPG Key 추가 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg apt source list에 repository 추가 echo "deb [arch=amd64 signed-by=/usr/share/keyr..

AWS CodeCommit을 이용해 S3에 정적 컨텐츠를 배포해 보자

개요 이번 포스팅은 AWS의 GitHub에 대응되는 CodeCommit의 레파지토리에 HTML로 구성된 정적 컨텐츠가 업로드되면 AWS의 CodePipeline이 이를 감지해 Amazon S3에 정적 컨텐츠를 배포하는 것을 구성해 보고자 한다.(AWS의 S3는 웹서버 기능을 대신 할 수 있다) 아키텍처 이번 포스팅에서는 웹서버 역할을 위해 S3를 사용할 것이고 정적 컨텐츠(html, css, js, image) 소스 관리를 위해 AWS CodeCommit을, 그리고 파이프라인 구성을 위해 AWS CodePipeline을 사용할 것이다. 그 아키텍처는 아래 그림과 같다. 사전조건 1. html 서비스를 위한 정적 컨텐츠 준비(html, css, js, image) - 별도로 준비하기 힘들다면 간단한 파일이..

Github대신 AWS의 CodeCommit을 사용해 보자 - HTTPS 인증 방식

개요 이번 포스팅은 앞서 포스팅했었던 동일 제목의 포스팅과 동일한 내용이다. 다만, 레포지토리 사용을 위한 인증방식만 차이가 있다. 따라서 기본 시나리오나 내용는 이전 포스팅을 참조해 보도록 하자 Github대신 AWS의 CodeCommit을 사용해 보자 - SSH 인증 방식 개요 중앙 집중화된 소스 관리툴은 에전에도 많았지만 최근 몇년사이 이 부분 defacto는 git으로 통일되고 있는 듯 하다. 요즘은 이러한 git 원격 저장소 역할을 하는 무료/유료의 서비스들이 다양 sharplee7.tistory.com 사용환경 macOS - Monterey gradle intelliJ 적용 수순 1. IAM 사용자 생성 및 CodeCommit 사용권한 추가 2. CodeCommit Repository 생성 ..

반응형