본문 바로가기

DevOps

(10)
ECS Graceful Shutdown (dumb-init) 개요오늘 포스팅해 볼 내용은 init system, 그중에서도 dumb-init을 사용해서 SIGTERM을 전파하는 방법에 대해서 알아보려고 한다. 사실 dumb-init을 이번에 처음 안 것은 아니고 2년 전에도 비슷하게 포스팅을 한 적이 있다. 그런데 이번에도 비슷한 이슈를 다루며 자세히 적어두면 좋을 것 같다고 생각하여 작성하게 되었다. 내가 관리하고 있는 rails 프로젝트에는 entry point가 아래와 같이 구성이 되어 있다.ENTRYPOINT ["sh", "-c", "export DD_AGENT_HOST=$(curl ); rails"]ECS 환경에서 Datadog을 사용하려면 이렇게 사용해야 한다. export 명령어를 사용하기 때문에 sh -c가 붙게 되고, 여기에서 별 다른 설정을 하지..
Rails 프로젝트 도커 캐싱하기 1. 사건의 발단사건의 발단은 몇 달 전으로 거슬러 올라간다. Rails 프로젝트 컨테이너라이징 작업을 하던 중… 도커 빌드 속도가 너무 느려서 하나를 수정해서 배포해도 6분, 8분, 12분 이런 식으로 너무 오래 걸려서 답답해하고 있었다. 분명히 캐싱이 적용되어 있을텐데? 싶어서 아무거나 하나 눌러서 보니까 웬걸 … 캐시를 전혀 사용하고 있지 않고 있었다… ㄴㅇㄱ 다른 루비 프로젝트들은 어떻게 하고 있지? 싶어서 다른 루비 프로젝트도 보니까 그냥 느리게 사용하고 있었다.언젠간 꼭 고쳐야지 … 😔 라는 생각으로 마음속의 백로그로 가지고 있다가 며칠 전부터 드디어 파보기 시작했다.2. 캐싱 적용 방법현재 캐싱을 위해 Github Action 플러그인인 docker/build-push-action를 사용하..
Linkerd Tutorial 따라해보기 쿠버네티스 클러스터에 linkerd를 설치하고 샘플 애플리케이션을 배포하여 linkerd를 사용해 보려고 한다. k8s 클러스터는 minikube를 사용하여 진행했고, https://linkerd.io/2.16/getting-started/ 에 나온 내용을 기반으로 공부한 내용을 추가하여 포스팅을 작성한다.1. linkerd 설치local machine에 linkerd를 설치하기 위해 아래 커맨드를 입력한다.$ curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install-edge | sh$ export PATH=$HOME/.linkerd2/bin:$PATH그 이후에 정상적으로 설치되어 있는지 확인하기 위해 아래 커맨드를 입력한다. 만약 아래처..
뉴렐릭 배포 마커 적용 방법 (w. Track Changes) ❕ 들어가며 제가 다니고 있는 회사에서는 로깅 시스템, APM 시스템으로 NewRelic을 사용하고 있습니다. 이번 글에서는 NewRelic을 조금 더 잘 활용하기 위한 기능인 배포 마커 (Deployment Marker)에 대해 소개합니다. 💡 이 글을 읽게 됨으로써 얻을 수 있는 지식은 아래와 같습니다. - 배포 마커 (Deployment Marker)가 무엇인지 - 변경 사항 추적 (Change Tracking)이 무엇인지 - 배포 마커나 변경 사항 추적을 사용하면 무엇이 좋은지 - 변경 사항 추적을 사용한 배포 마커 적용 사례 ✒️ 배포 마커(Deployment Marker) 배포 마커는 배포 시점에 APM 차트와 대시보드에 마커를 추가해 주는 기능으로, 에러가 나는 경우에 배포의 영향은 아닐지 ..
Secret Manager를 사용해서 Spring Boot 프로젝트의 property값 관리하기(2) - EC2 🔐 들어가며 Secret Manager란? Secret Manager는 AWS에서 제공해주는 비밀 값 관리 서비스로, 기존에 자바 환경설정 파일에 직접 하드 코딩해서 관리하는 방식을 벗어나 AWS에서 관리하는 방식입니다. 보안 정보당 월 0.4$의 저렴한 가격으로 이용이 가능합니다. 위의 사진에 있는 예시처럼 DB 정보를 저장할 수도 있고, 인증 정보를 저장할 수도 있고, API 키를 저장할 수도 있습니다. 이번 포스팅은 2가지 단계로 진행될 예정입니다. 저번 포스팅에서는 로컬에서 Secret Manager로 접근하는 방법에 대해 다룰 예정이며, 이번 포스팅에서는 서버에서 Secret Manager를 접근하는 방법에 대해 다룰 예정입니다! 이번 포스팅에서는 저번 포스팅에서 작성했던 코드에 대해서는 다루지..
Secret Manager를 사용해서 Spring Boot 프로젝트의 property값 관리하기(1) - 로컬 환경 🔐 들어가며 Secret Manager란? Secret Manager는 AWS에서 제공해주는 비밀 값 관리 서비스로, 기존에 자바 환경설정 파일에 직접 하드 코딩해서 관리하는 방식을 벗어나 AWS에서 관리하는 방식입니다. 보안 정보당 월 0.4$의 저렴한 가격으로 이용이 가능합니다. 위의 사진에 있는 예시처럼 DB 정보를 저장할 수도 있고, 인증 정보를 저장할 수도 있고, API 키를 저장할 수도 있습니다. 이번 포스팅은 2가지 단계로 진행될 예정입니다. 이번 포스팅에서는 로컬에서 Secret Manager로 접근하는 방법에 대해 다룰 예정이며, 다음 포스팅에서는 서버에서 Secret Manager를 접근하는 방법에 대해 다룰 예정입니다! 🔑 AWS Secret Manager 만들기 Secret Mana..
Github Action과 AWS CodeDeploy를 사용하여 Spring Boot 프로젝트 CI/CD 파이프라인 구축하기 🔐 들어가며 안녕하세요! 이번 포스팅에서는 Github Action과 AWS CodeDeploy를 사용해서 CI/CD를 구축하는 방법에 대해 설명드리려고 합니다. 수동으로 매번 배포를 할 수도 있지만, CI/CD 파이프라인을 한 번 구축해두고 나면 매번 수동으로 배포할 필요가 없어 정말 편리하기 때문에 꼭 구축해보시는 것을 추천드립니다. 이 포스팅에서 구축할 파이프라인의 진행할 순서를 간단하게 그림으로 요약하면 아래와 같습니다. 개발자가 코드를 변경하고 Github에 Push 한다. Github Action이 돌아가며 빌드&테스트를 하고(CI), 문제가 없다면 압축파일(.zip)을 만든다. 만든 압축파일(.zip)을 AWS S3에 업로드한다. 업로드한 압축파일을 넘겨주며 CodeDeploy를 이용해 배포..
AWS 해킹 시 대처 방법, 해킹 방지하기 🤯 Access Key가 털렸어요! 어느 날 AWS에서 한 통의 메일이 도착했습니다. 별 내용 아니겠지 ~ 하고 가볍게 읽었는데, 생각보다 심각한 내용의 메일이었습니다. 😱 지금 너의 Access Key가 유출된 것 같다. 수상한 내용이 감지되어서 비활성화를 해둔 상태이다. 확인을 해봐라 허겁지겁 쌓인 메일을 보니 이미 Access Key는 유출되어서 정말 많은 리전에서 거대한 인스턴스를 띄운 상태였고, 정~말 다행히도 AWS에서 이를 눈치채고 일찍 비활성화를 해두어서 다른 분들처럼 과금이 발생하진 않았지만, 다른 아티클에서만 있던 일들이 일어나니 머리가 새하얘졌습니다. 저와 같은 상황에 처했던 분들을 위해 사후 대처하는 방법과 보안을 강화하는 방법에 대해 포스팅을 작성해보았습니다. 사실 전 아직도 어디..