일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- aws
- Kubernetes
- 정보처리기사 실기 기출문제
- Pinpoint
- Linux
- CKA
- kotlin spring
- AI
- 오블완
- Java
- Spring
- IntelliJ
- AWS EKS
- CKA 기출문제
- 정보처리기사실기 기출문제
- 기록으로 실력을 쌓자
- 공부
- kotlin
- 코틀린 코루틴의 정석
- mysql 튜닝
- APM
- MySQL
- kotlin coroutine
- PETERICA
- 정보처리기사 실기
- kotlin querydsl
- CloudWatch
- Elasticsearch
- minikube
- 티스토리챌린지
- Today
- Total
목록전체 글 (789)
피터의 개발이야기
ㅁ SpringBoot 2.3 이전 버젼에서 graceful shutdown 구현 import org.apache.catalina.connector.Connector; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextClosedEvent; import java.util.concurrent.Executor; import java.u..
ㅁ 개요 Kubernetes환경에서 graceful shutdown의 적용방법을 공부하면서 Kubernetes환경에서 오케스트레이션 작업 중 Pod가 종료되는 과정이 많다. 로드밸런싱 역할을 하는 Service와 속해 있는 Pod 들이 종료하는 과정을 정리하였습니다. ㅁ Kubernetes의 Pod 종료과정 1- Pod가 Terminating 상태로 전환되고 새 트래픽 수신을 중지합니다. 컨테이너는 여전히 Pod 내에서 실행 중입니다. 2- preStop hook은 특별한 명령이나 HTTP 요청이 실행되어 Pod 내부의 컨테이너로 전송됩니다. Termination 상태가 된 Pod은 Service의 로드밸런싱 대상에서 제외된다. 로드 밸런싱 대상에서 제외됐으므로 더이상 해당 Pod으로 트래픽이 전달되지 ..
ㅁ 개요 ㅇ Kubernetes가 배포 절차를 수행해 주지만 컨테이너 안에서 Spring Boot 애플리케이션의 정상적인 종료를 위해서는 Graceful shutdown이 필요하다. ㅇ 트래픽에 따라 AutoScaling 되면서 502error가 발생하기 때문이다. ㅇ 502 Error가 발생하는 과정을 설명하고 graceful shutdown의 적용필요성을 정리하였다. ㅁ Graceful shutdown이란 우아한 종료라고 직역할 수 있을 것이다. 이 말을 생각해보면, 마무리를 잘하여 좋게 끝난다는 의미를 내포하고 있다. 다시 말해 할일을 다 마치고 우아하게 종료하는 것이다. 예를 들어 생각해보자. 우리가 문서작업을 할 때에 우리가 원하는 작업이 정상적으로 완료되면, 파일을 저장하고 해당 문서편집파일을..
ㅁ Amazon ECR plugin 에러 발생 Amazon ECR Failed to load: Amazon ECR plugin (amazon-ecr 1.6) - Failed to load: Amazon Web Services SDK :: All (aws-java-sdk 1.12.215-339.vdc07efc5320c) Amazon Web Services SDK :: All Failed to load: Amazon Web Services SDK :: All (aws-java-sdk 1.12.215-339.vdc07efc5320c) - Plugin is missing: aws-java-sdk-codebuild (1.12.215-339.vdc07efc5320c) ㅁ 프로젝트 빌드 실패 ERROR: Could ..
ㅁ Minikube 관련 글 ㅇ [minikube] 맥에 minikube를 사용해 로컬 kubernetes 설치 ㅇ [minikube] minikube 기본 명령어 정리 ㅇ [minikube] minikube 다중노드 구성하기 ㅇ [minikube] minikube에서 meteric server 실행하기 ㅇ [minikube] minikube dashboard 활성화 방법 ㅁ 개요 ㅇ 로컬에서 쿠버네티스 공부를 시작하는 경우, minikube를 사용해 간단하게 단일 노드 클러스터를 구성할 수 있다 ㅇ 단일 노드의 가상머신에서만 실행되기 때문에 분산된 쿠버네티스 클러스터의 안정성은 보장할 수 없다. ㅇ Mac OS에서 minikube를 설치하는 과정을 정리하였다 ㅁ Minikube란? Minikube는 K..
ㅁ 개요 ㅇ 개발 젠킨스 플러그인이 문제가 발생하여 이를 조치하는 과정을 정리하였다. ㅁ Dependency errors Dependency errors: SSH Credentials Plugin (277.v95c2fec1c047) Update required: Trilead API Plugin (trilead-api 1.0.8) to be updated to 1.0.13 or higher Jackson 2 API Plugin (2.13.3-285.vc03c0256d517) Update required: JAXB plugin (jaxb 2.3.0) to be updated to 2.3.6-1 or higher Jenkins GIT server Plugin (1.11) Update required: SSH..
ㅁ 개요 ㅇ API 요청에 대한 상세정보의 히스토리 관리를 위해 사용하고 있던 MongoDB에 부하가 발생하였다. ㅇ 부하의 원인이 된 요청을 찾고 Kill하여 부하를 해소하였고, 그 과정을 정리하였다. ㅁ 장애인지 ㅇ MongoDB가 사용하는 볼륨의 DISK I/O가 96%가 넘었다고 알람이 발생하였다. ㅇ DISK I/O가 100%가 되었다. ㅇ CPU 사용량을 30%미만이었고, DISK I/O만 높은 상태였다. ㅇ 히스토리 관리를 위한 저장용으로 사용하다보니 단건에 대한 확인용으로만 설계되어 있어서 Collection당 많은 데이터가 존재하였다. ㅇ Key값이 아닌 다른 비교조건을 넣는 경우 상당한 데이터가 조회되는 구조였다. ㅇ 어떤 요청인지 정확히 알 수는 없지만(사실 원인파악보다 ..
ㅁ 개요 ㅇ mysql의 성능향상을 위한 구체적인 지표를 얻을 수 있는 방법을 찾고 있었다. ㅇ profiling을 통해 디비 프로세스의 다양한 성능지표를 확인하여 쿼리 성능을 확인할 수 있다. ㅁ Mysql 버젼확인 ㅇ 참고로 현재 테스트 중인 Mysql은 회사에서 사용 중인 AWS Aurora RDS와 동일한 5.7버젼에 맞추었다. ㅁ SHOW PROFILE 이란? MySQL 에서 쿼리가 처리되는 동안 각 단계별 작업에 시간이 얼마나 걸렸는지 확인 할 수 있는 기능을 제공하며 쿼리 프로파일링(Query Profiling) 기능을 제공하고 있다. 쿼리 프로파일링(Query Profiling)는 MySQL 5.1 이상에서 부터 지원한다. 메모 SHOW PROFILE은 향후 MySQL 릴리스에서 제거될 것..
ㅁ 개요 ㅇ 개발자 중에 한명으로부터 AWS 컨솔의 비밀번호 초기화 요청을 받았고, 그 과정을 정리해 보았다. ㅁ 사용자 찾기 ㅇ AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 연다. ㅇ 탐색 창에서 사용자를 선택한다. ㅁ 보안 자격 증명 ㅇ 보안 자격 증명(Security credentials) 탭을 선택한 다음, 로그인 자격 증명(Sign-in credentials)에서 콘솔 비밀번호(Console password) 옆에 있는 관리(Manage password)를 선택한다. ㅁ 비밀번호 변경 ㅇ 사용자 지정 비밀번호 선택하여 임의 비번을 설정한다. ㅇ 접속 성공 시 비밀번호 재설정에 체크를 한다. ㅁ 함께 보면 ..
ㅁ 개요 ㅇ nGrinder 부하테스트 환경을 구축 중에 Groovy로 테스트 스크립트를 작성하는 과정에서 Groovy 환경 세팅이 필요하였다. ㅇ Intellij에서 groovy에 환경을 구축하는 방법에 대해 정리하고 테스트까지의 과정을 정리하였다. ㅁ Groovy SDK 다운로드 brew install groovy ㅇ Mac에서 brew를 이용하여 groovy를 설치하였다. ㅇ 참조 페이지: https://groovy.apache.org/download.html#osinstall ㅇ GROOVY_HOME=/usr/local/opt/groovy/libexec # groovy 버젼확인 groovy --version ㅇ groovy 버젼을 확인 하였다. 버젼언 4.0.3이다. ㅁ Gradle Maven d..
ㅁ 개요 ㅇ EC2 파일 시스템이 꽉차면 더 이상 저장할 공간이 없게 되면서 서버 장애가 발생한다. ㅇ 이를 예방하기 위해 정기적으로 파일시스템을 점검하거나 APM Agent를 설치하여 모니터링을 해야한다. ㅇ 운영AWS 환경에는 Whatap을 이용해 EC2의 여러 지표를 모니터링하고 알람을 설정하였는데, 개발EC2의 경우 간단하게 crontab + shell을 이용하여 rocketChat으로 알람을 발송하는 방법을 정리하였다. ㅁ Shell 작성 [ec2-user@DEV-BASTION]$ cat volum_chk.sh #!/bin/sh # Ip Address HOST_IP=$(hostname -I); # ex) DEV-RCS-PRI-BASTION HOST_NAME=$(hostname -s); # 알람 ..
ㅁ 개요 ㅇ 로켓챗에 시스템 알람을 표시 하기 위해 Incommong WebHook을 생성하고 알람을 발송하는 과정을 정리하였다. ㅁ Admin Panel로 이동 ㅁ 인티그레이션 ㅇ 인티그레이션을 클릭한다. ㅇ Incoming 선택 후 + New를 클릭한다. ㅁ Incoming Webhook 생성 ㅇ 활성화를 체크한다. ㅇ #MonitoringAlarm 채널을 입력한다. ㅇ peter 작성자를 등록. ㅇ 채널에 표시될 Alias를 넣는다. MonitoringAlarm로 입력하였다. ㅇ 아바타로 👻 를 선택하였다. ㅇ 스크립트 사용을 활성화 한다. /* exported Script */ /* globals console, _, s */ /** Global Helpers * * console - A norm..
ㅁ 개요 ㅇ 로켓챗은 DevOps에서 중요한 역할을 한다. 개발자의 의사소통 및 정보 공유가 빠르며 쉽게 이루어지도록 도와주기 때문이다. ㅇ 로켓챗을 세팅하고 다루어보기 위하여 Docker 기반으로 설치하는 과정을 정리하였다. ㅁ Rocket.Chat 설치과정 ㅇ linux와 ubuntu에 직접 설치하는 과정을 예시도 있지만 제일 간단한 방법은 Docker로 설치하는 방법이다. ㅇ Rocket Chat의 문서를 기반으로 설치하였다. 바로가기 ++ Rocket.Chat Docker 및 Docker Compose 설치 ㅇ기본적으로 Docker와 Docker-compose가 설치가 되어 있어야 한다. ㅇ 원하는 디렉토리를 생성하여 docker-compose.yml를 다운받는다. # docker 버젼확인 doc..
해당 자료는 미국의 블러그를 기초로 하였으며, 미국 서부(오레곤 us-west-2, 0.07 USD)의 요금체계를 가지고 있다. 서울 리전의 경우 시간당 0.10 USD이라 오히려 요금이 더 비싸질 수 있다. (2022.8.2 기준) ㅁ 개요 ㅇ Aurora를 사용하면서 적절한 시기에 서버를 증설해 주지 않는다면, 서버가 터질 수 있다. ㅇ 그래서 서버 부하에 대해 모니터링이 필요한데, 이를 자동으로 처리해 주는 Aurora Serverless를 고민하게 되었다. ㅇ Aurora Serverless V1과 V2가 존재하며 V2의 경우 비용이 더 비싸다. ㅇ 실질적 요금 계산은 AWS 요금계산기를 통해 산정해 보는 것이 좋다. ㅇ 이 글은 Aurora와 Aurora Serverless의 비용적 측면에서 효..
ㅁ 개요 ㅇ AWS 시스템을 모니터링을 하기 위해서 다양한 지표를 확인해야한다. ㅇ 상황에 따라 필요한 지표를 빠르게 CloudWatch Dashboard로 생성하는 과정을 정리하였다. ㅁ 상황에 따른 모니터링 지표 대상 선택 현재 담당하고 있는 시스템에서 트래픽이 일정기간 집중되어 있다. 그래서 RDS Aurora Mysql 경우 특정기간에 scale up, scale down을 하고 있다. 하지만 때로는 특정치 않은 상황에서 대량의 트래픽이 발생할 경우가 있어 Redis 엔진 CPU 사용량, RDS CPU 사용량, 로그와 mongoDB가 사용하는 볼륨의 지표를 모니터링이 필요하다. ㅁ Redis 엔진 CPU 사용량 ㅇ Redis을 메인 데이터베이스로 사용하고 있다. 그래서 트래픽 부하가 증가할 때에 ..