개발 공부 기록하기/03. AWS & Infra 13

JVM APM - 핀포인트 최신 버전(2.2.0) 다운로드

1. 일단 EC2 를 만들었다. sudo apt-get update mkdir -p /home/ubuntu/app/pinpoint # /home/ubuntu/app/pinpoint mkdir -p /home/ubuntu/app/pinpoint/hbase/data mkdir -p /home/ubuntu/app/pinpoint/zookeeper 2. 일단 HBase를 설치한다 https://cyberx.tistory.com/164 Apache에서 만든 하둡 기반의 분산 관리형 DB HBase 개념 정리 HBASE 란? 1.1 HBase 소개 Hadoop의 HDFS위에 만들어진 분산 컬럼 기반의 데이터베이스 입니다. 구조화된 대용량의 데이터에 빠른 임의접근을 제공하는 구글의 빅 테이블과 비슷한 데이터 모델을 ..

AWS Auto Scaling에 로드 밸런서 붙이기

안녕하세요 여러분! 공부하는 개발자입니다 ㅎㅎㅎ 저번 시간에 만들었던 Auto Scaling 그룹에 LB를 붙여보려고 합니다! LB를 붙이려면 대상 그룹이라는 것이 필요한데요! 바로 한 번 대상그룹부터 만들어보겠습니다. 대상그룹 대상 그룹은 LB에 들어온 요청을 전달 받는 '대상' 그룹이라고 할 수 있습니다! 대상 유형으로는 3개가 있습니다. 인스턴스 IP 주소 Lambda 함수 여기서는 우선 인스턴스를 골라보도록 하겠습니다! nginx를 80번으로 열어줄거라 HTTP 80을 골랐고요, VPC는 저번에 만들었던 EC2 Auto Scaling Group의 VPC와 동일한 VPC를 선택해 주었습니다! 다음은 상태 검사 방법과 추가적인 태그를 달 수 있는데요 HTTP /ping 경로로 상태체크를 사용하도록 했..

AWS 시작 템플릿 (Launch Template) 옵션 하나하나 살펴보기

안녕하세요~ 여러분 공부하는~개발자 입니다 ㅎㅎㅎ 오늘은 바로바로 에 대해서 집중적으로 알아보려 합니다. 이전 포스팅에서 Auto Scaling 그룹 만들때 필요했었는데 뭔가 이것저것 하다보니 그냥 되었죠 ㅋㅋㅋㅋ 그래서 이번 포스팅에서는 조금 더 디테일하게 까보려고 합니다 AWS 공식 문서와 만들어진 실행그룹을 보며 각 설정이 하나하나 어떤 뜻인지 들이파 보겠습니다. 우선 공식문서부터 바로바로 가보시죠~ 공식 문서 정리 우선 시작 템플릿이란 EC2 인스턴스 시작에 필요한 구성 정보를 모아둔 template 입니다. 이 시작 템플릿에는 버전이 있는데요 마치 저희가 코드 살짝 바꾸고 버전 올려서 배포하는 것과 비슷하다고 생각하시면 됩니다. 1 버전에서는 t2.small이었던 인스턴스 유형이 2버전에서 t2..

AWS Auto Scaling 구축하기

안녕하세요! 여러분 공부하는~개발자입니다 ^^ 이번 시리즈에서는 EC2 AutoScaling 구축을 해보려고 합니다. AWS를 사용하는 많은 운영 환경에서는 하나의 EC2 인스턴스가 아닌 여러 인스턴스를 사용하는데요, 트래픽이 갑작스럽게 몰리거나 특정 시간에 많은 인스턴스가 필요한 경우에 자동으로 대응하기 위해서입니다. 사람이 24시간 수동으로 대응할 수는 없으니까요!! 자 그럼, 이번 시리즈에서는 EC2 Auto Scaling 그룹을 만들어 간단한 Nginx + WAS만을 두고, 해당 WAS에 트래픽을 높여 새로운 인스턴스가 자동으로 생긴 후 트래픽이 분산되는지 테스트 해보도록 하겠습니다 ㅎㅎ 이번 포스팅에서는 우선 Auto Scaling 그룹을 만들어 CPU 사용량에 따라 자동 scale out이 되..

ulimit에 대해 알아보자

안녕하세요 여러분! 공부하는 개발자입니다 😉 오늘은 linux에서 사용하는 ulimit 명령어에 대해 알아보려고 합니다! 사용 OS : Amazon Linux 2 (RHEL) 사용 머신 : t2.medium 1. ulimit이란? ulimit 명령어의 man 페이지를 보면 다음과 같이 나와 있습니다. Provides control over the resources available to the shell and to processes started by it, on systems that allow such control. 해석을 해보자면, "우리가 접속하는 shell이나 실행시키는 프로세스가 사용할 수 있는 머신의 자원의 조절을 제공한다"라는 뜻입니다. 예를 들어, 우리가 실행시키고 있는 프로세스에서 ..

패커 (Packer) 시작하기

안녕하세요 여러분! 공부하는~ 개발자 입니다 :) 이번 시간에는 바로바로 하시코프(HashiCorp)에서 만든 Packer에 대해 알아보겠습니다! Getting Started 공식 문서 : https://learn.hashicorp.com/collections/packer/getting-started Packer란 여러 type의 머신 이미지 생성을 자동화하는 도구입니다. 가상 머신 이미지를 만들어주는 오픈소스라고 생각하시면 됩니다. 하나의 스크립트로 GCP, AWS, VMWare 등의 이미지를 한 번에 만들 수 있는거죠. 네, 저도 잘은 모르는데요 일단 바로 한 번 Getting Started를 따라해보겠습니다. 1. Packer 설치 첫 단계는 Packer 설치네요.. 저는 Mac을 사용하고 있기 때..

AWS SQS 들이파기

안녕하세요~~ 여러분~! 공부하는개발자 입니다 ㅎㅎㅎ 이번 시간에는 바로바로~ SQS에 대해서 알아보려고 합니다. SQS란 무엇인지, Java + Spring으로 어떻게 사용할 수 있는지, 사용시 주의할 점 등은 무엇인지 간단바리(들이파기라 해놓고 간단바리..?)로 살펴보겠습니다. 바로 시작해보죠! AWS SQS란? SQS는 Simple Queue Service의 약자입니다. 애플리케이션 간의 메시지를 전달하기 위한 아주 '간단한' Queue 라고 생각하면 됩니다. 홈페이지 설명에 따르면, 지속성이 우수하고 사용 가능한 보안 호스팅 대기열을 제공하며, dead-letter queue, 표준대기열, FIFO 대기열을 지원하고 있습니다. SQS와 MQ의 차이점 RabbitMQ를 들어본 적이 있는 사람이라면,..

[AWS SQS 들이파기] DLQ(Dead-Letter Queue) 설정하기

이제 DLQ를 설정하고 테스트를 해보겠습니다. 우선 삭제된 Message가 들어갈 Queue를 새로 하나 만들어 주어야 합니다. sqs-study-dlq 라는 이름을 가진 Standard Queue를 빠르게 만들었습니다 ㅎㅎㅎ (한 번 해봤으니 쉽죠..?) 그리고 sqs-study 로 들어가 편집 > 배달 못한 편지 대기열을 설정해 주었습니다. 간단합니다 ㅎㅎ..저장을 누르면 이렇게 나옵니다. 이제 테스트를 해보겠습니다! 간단하게 console로 쓱-샥 해볼 예정 ㅎㅎ 1. sqs-study에서 메시지 전송 2. 메시지 폴링을 반복적으로 클릭! 폴링 진행 상황이 가득차면 그 위에 있는 메시지 폴링을 클릭할 수 있습니다 ㅎㅎㅎ 3. 메시지 수신수가 5를 넘어가게 되면..! 어느덧 사용 가능한 메시지가 0으..

[AWS SQS 들이파기] SQS에서 메시지 받기 II (Java + Gradle + Spring)

모든 코드는 github에 올라가 있습니다. SQS로부터 메시지를 받는 두 번째 방법은~~ 바로바로 Annotation을 이용하는 방법입니다. 아래의 PersonListener 코드를 봐보죠! @Slf4j @Component // Bean 등록을 꼭 해줘야 한다! public class PersonListener { @SqsListener(value = "sqs-study", deletionPolicy = SqsMessageDeletionPolicy.NEVER) public void listen(@Payload Person person, @Headers Map headers, Acknowledgment ack) { log.info("{}", person); log.info("{}", headers); l..

[AWS SQS 들이파기] SQS에서 메시지 받기 I (Java + Gradle + Spring)

모든 코드는 github에 올라가 있습니다. 이제 메시지 보내는 것은 성공했으니 보낸 메시지를 받아보려고 합니다. 그 전에 MessageConverter 에 대해서 간단히 알아 봅시다 ㅎㅎ QueueMessagingTemplate은 단순한 String을 주고받는 메소드 외에, Java Object를 받는 다양한 전송 메소드들이 존재합니다. 그 중에 convertAndSend() 와 receiveAndConvert()는 MessageConveter 인터페이스에게 직렬화/역직렬화 책임을 위임하고 있습니다. 실제로 코드를 살펴보면 아래와 같습니다. AbstractMessageSendingTemplate (spring-messaging) @Override public void convertAndSend(Stri..