본문 바로가기

개발노트

(111)
AWS ECS 로 blue/green 배포 시 겪은 troubleshooting 기록 배경 그동안 EC2 ASG 로 서버 애플리케이션을 실행하는 환경에서 ECS 로 이전을 해야할 필요가 생겼다. 그동안 처음부터 ECS 로 구축하거나 기존에 EC2 ASG 로 운영하던 서비스를 ECS 로 이전해본 경험이 많이 있었는데 유독 이번에 이전 작업을 할 때 문제를 겪은 순간이 많이 있어서 기억을 되짚어가며 기록으로 남겨보려고 한다. 들어가기 전에 ECS Fargate 가 아닌 ECS on EC2 를 사용하고 있다. ECS 의 capacity provider 는 두 종류의 architecture(amd, arm)를 지원하기 위해 두 개가 구성돼있다. ECS cluster 용 EC2 instance 에는 ecs agent 의 설정에 `ECS_CONTAINER_STOP_TIMEOUT=35m` 가 있는 상..
AWS SSM > session manager 를 이용하여 EC2 접속하기 부제 SSH key 없이, AWS Access Key 로 원격에서 EC2 의 shell 을 실행하기 예상 효과 & 목적 EC2 접속을 위한 SSH Key 관리를 하지 않아도 되게 함으로써 개발자 생산성 향상 새로운 팀원에게 SSH Key 를 발급해주거나, 기존 Key 를 전달하는 과정 등에서 보안 취약점이 생길 수 있음 또한 SSH Key 관리를 한다는 것 자체가 개발자/인프라 담당자의 생산성을 저하시키는 업무가 될 수 있음 Bastion 서버를 따로 운영하지 않아도 됨 같은 망이 아닌, 원격에서도 Private Subnet 에 있는 EC2 에 바로 접속할 수 있어서 개발자 생산성 향상시킬 수 있음 SSH 접속 기록을 CloudWatch 또는 S3 에 log 를 남기는 것을 통해 보안 감사 capabil..
cloudflare free plan 을 이용한 DDNS 설정 들어가며, 내 집에는 라즈베리 파이가 있다. 여러가지 목적으로 잘 활용하고 있는데, 그 중에서 WOL 실행기로써 사용하고 있는 것이 매우 편리하다. 바깥에 나가있을 때 언제 어디서든 집에 있는 컴퓨터를 켜고 각종 필요한 관공서/민원 서류를 발급받아 내가 있는 곳으로 전송을 해야하거나, 컴맹인 가족이 뭘 해달라고 하면 대신 해줘야 하는 일들이 종종 있기 때문이다. 원래는 WOL 기능이 지원되는 iptime 의 공유기를 썼었는데, 이사온 집에서는 Wifi mesh 때문에 통신사에서 빌려주는 공유기를 쓰고 있다. 따로 Wifi mesh 를 구성할 수도 있었지만 굳이 비용을 들이지 않고 통신사에서 빌려주는 공유기를 쓰면 쉽게 설정 가능했기에 그렇게 쓰고 있다. 그러나 통신사에서 주는 공유기는 WOL 기능이 없다..
Docker - no space left on device 대응 방법 AWS ECS 로 서버를 운영하고 있는데, ECS Fargate 가 아니라 ECS on EC2 로 운영을 하다 보면 EC2 에 대한 관리도 개발자/인프라 관리자가 책임을 갖게 된다. ECS on EC2 로 운영하고 있는 상황에서 새로운 ECS task 를 띄우려고 할 때 가끔씩 CannotPullContainerError: failed to register layer. ... no space left on device 와 같이 오류가 발생하며 task 가 실행되지 않는 이슈가 생길 수 있다. 이는 EC2 의 용량이 꽉 차서 생기는 문제일 확률이 매우 높으며, 아래와 같이 해결할 수 있다. 1. 주기적으로 docker prune 을 한다. - EC2 를 launch 하는 데 사용되는 LaunchTempla..
AWS CodeBuild 의 실행 속도가 느리다면 해야할 것 한 회사에서 오래 근무했거나 새로 합류했다면 저마다의 이유로 문제를 문제라고 인식하지 못하는 경우가 있다. 최근에 AWS CodeBuild 의 실행이 종료되기까지 아주 오래 걸리던 프로젝트가 있었는데, 최근에 원인을 파악하고 해결했던 적이 있어 기록을 남기고자 한다. AWS CodeBuild 의 실행 속도가 느리다면 해야할 것 1. S3 cache 를 쓰도록 하기 - buildspec 에서 cache 할 파일들의 path 를 지정하고, CodeBuild project 에서 S3 cache 를 사용하도록 하면 지정한 bucket&path 에 cache 파일이 생기고, 그 이후 다음 build 를 할 때마다 cache 를 다운로드를 먼저 받는다. 이를 이용하여 bundle install, npm instal..
MongoDB, DocumentDB 1년 운영 경험 기록 부제 : findAndModify 를 이용한 auto_increment 구현 시, 성능을 고려한 설계 필요 서론 작년(2021년) 이맘때 쯤, 회사에서 서비스하고 있는 리멤버의 알림 서비스/도메인을 분리하는 프로젝트를 진행했었다. Java 기반의 알림 서비스로 MSA 전환기 - 리멤버 기술 블로그 Java 기반의 알림 서비스로 MSA 전환기 - DRAMA&COMPANY 안녕하세요! 리멤버에서 Platform Crew에 속해있는 서버 개발자 신선영입니다. 플랫폼 크루에서는 기존의 Ruby로 만들어진 모놀리틱 서비스를 점진적으로 Java 기반의 MSA로 전환하는 작업을 하고 있 blog.dramancompany.com 대부분의 설계, 작업은 다른 분들이 하셨었고 나는 주로 설계 리뷰, 코드 리뷰에 참여하여 ..
AWS private API Gateway 뒤에서 springdoc swagger 접근 path 관련 troubleshooting 몰랐던 점 1. private API Gateway 는 custom domain name 으로 API Mapping 연결하여 사용할 수 없다. 더 앞단에 custom domain name 으로 연결할 LB 와 TargetGroup 을 둬서 연결하는 workaround 가 있기는 하다만, 불필요하게 LB, TargetGroup 이 필요하다고 느껴졌고, 구현한 API 들의 경로는 문제가 없는데 단순히 springdoc swagger openapi 문서 제공을 위해 그런 인프라 구성을 하는 것이 매우 over engineering 이라고 생각했다. 2. spring boot + springdoc 에서 application properties 로 path, url 등을 설정할 수 있는데 해당 설정을 하면 어떻게..
Pulse Secure (Mac) 이 Disconnecting 에서 멈춰있을 때 Pulse Secure 창을 다시 꺼도, Cmd + Q 를 눌러 종료했다가 다시 실행해봐도 계속 Disconnecting 인 상태로 멈춰있을 때가 있다. 그 때, Cancel 을 눌러 다시 Connect 를 눌러도 "Connect requested" 라는 메시지만 계속 떠있을 뿐 상황인 그대로다. 이럴 때는 Command Line 으로 껐다가 다시 켜면 된다. Stop command - sudo launchctl unload -w /Library/LaunchDaemons/net.pulsesecure.AccessService.plist Start command - sudo launchctl load -w /Library/LaunchDaemons/net.pulsesecure.AccessService.plis..

반응형