ECS로 Nexus 구축하기

최근에 Jenkins 서버의 용량이 가득 차면서 함께 올라가있던 다른 서비스들도 멈춰버리는 문제점이 발견되었습니다. 그래서 그 중 하나인 Nexus를 분리하고 Blob Store를 Local Storage가 아닌 S3로 설정하여 비용 절감을 꾀하기로 합니다. 기왕 이렇게 하기로 결정하였으니, ECS에 서비스 형태로 올려보고자 합니다. EFS 설정하기 ECS의 Fargate는 EBS를 지원하지 않습니다. 대신에 조금 더 비싼 요금을 자랑하는 EFS를 볼륨으로 제공합니다.…

Continue reading ECS로 Nexus 구축하기

ECS 서비스에 Auto Scaling 적용하기

EC2를 이용하여 서비스의 크기를 조절하기 위해서는 충분한 시간이 필요했습니다. Auto Scaling 기능의 매력은 충분하나, 급변하는 트래픽이나 사용량에 대해서 민첩하게 대응하기는 어렵습니다. 아무래도 OS부터 부팅되고 서비스가 올라가려면 5분 정도의 시간이 필요한데 그때쯤에는 급격한 트래픽이 다시 돌아오기에 충분하죠. 컨테이너 이미지의 장점은 이러한 상황에서도 빠르게 대응하는 것이 가능하다는 점일 것입니다. 준비된 OS 레이어 위에서 서비스만 배포되면 되기 때문에…

Continue reading ECS 서비스에 Auto Scaling 적용하기

Terraform 시작하기

인프라 관리를 시작하고 처음 든 생각은 이것이었습니다. 왜 배포 환경 (이하 스테이지)마다 인프라 형상이 다른가? 같은 형상으로 배포하는 것은 정말로 어려운 일인가? 원인은 크게 두 가지라고 생각합니다. 첫째는 인프라 구축을 담당하는 팀이 따로 있었는데, 능동적으로 서비스 개발에 참여하는 것이 아니라서 인프라를 잘 모르는 개발팀의 요건을 그대로 수용하였던 것입니다. 둘째는 이러한 상황에서 개별 이슈 처리를 위해…

Continue reading Terraform 시작하기

ECS 서비스 배포 파이프라인 구축하기

제가 OpsNow의 레거시 환경을 개선하기 위해서 가장 처음 도입하고자 마음먹은 것은 어쩌면 당연하게도 개별 서비스를 컨테이너로 만드는 것입니다. 그리고 이렇게 생성된 컨테이너 이미지를 ECS에서 Fargate에 배포함으로써 Serverless 서비스를 만들고자 하였습니다. 많은 시간과 노력을 들인 끝에, 코드에서부터 서비스 배포까지 이어지는 CI/CD 파이프라인을 구축할 수 있었습니다. 이번 글을 통해서 어떻게 OpsNow의 레거시 서비스가 Serverless로 나아갈 수 있었는지…

Continue reading ECS 서비스 배포 파이프라인 구축하기

ECS의 Service Discovery 소개

ECS에서 Fargate로 서비스를 생성하고 로드 밸런서에 연결하게 되면, 추후 서비스 배포를 위해서는 반드시 CodeDeploy를 이용해야 합니다. 그리고 블루/그린 배포는 선택이 아닌 필수가 됩니다. 그리고 의외로, 이러한 설정 과정은 결코 쉽지가 않습니다. ECS의 구성으로 EC2를 선택하면 Rolling Update 같은 방식을 제공하지만, Fargate는 그렇지가 않았기 때문입니다. 그렇다고 배치성 작업이라 할지라도 호출이 필요한 서비스를 로드 밸런서에 연결하지 않을…

Continue reading ECS의 Service Discovery 소개

EC2에서 EKS가 아닌 ECS로 전환한 이유

OpsNow가 처음 개발이 시작될 때부터 지금까지 대다수의 서비스는 EC2에 올라가 있습니다. 초창기에는 AWS 인프라로부터의 독립성을 보장받고 싶었고 그에 따라서 대부분의 기능을 EC2에 올려서 단순 VM처럼 이용했기 때문입니다. 시간이 지남에 따라서 비용 절감과 유지보수를 최소화하기 위한 노력이 시도되었는데, 이를 위해서는 AWS의 다양한 관리형 서비스를 이용하는 것이 훨씬 유리하다는 사실을 알게 되었습니다. 관리형 서비스는 개발자가 정말로 서비스…

Continue reading EC2에서 EKS가 아닌 ECS로 전환한 이유

EC2 스케쥴링 손쉽게 하기

AWS에서는 EC2에 대해서 정말 많은 기능을 제공하고 있지만, 특이하게도 스케쥴링 기능을 네이티브로 제공하고 있지 않습니다. 필요하면 알아서 만들어서 사용하라고 가이드는 하고 있습니다. (관련 문서) 이러나 저러나, 사용자가 직접 만들어야 한다면 역시 태그를 기반으로 하는 스케쥴러가 가장 좋은 방법일 것입니다. 그래서 본 글에서는 OpsNow의 개발계에서 사용하는 EC2 스케쥴링 방법과 그 사용 방법을 소개하고자 합니다. Lambda 함수…

Continue reading EC2 스케쥴링 손쉽게 하기

코드 품질 관리하기

아마 이 글을 읽고 계신 개발자라면 한번쯤은 이런 고민을 해봤을 것이라고 생각합니다. 내가 작성하고 있는 코드의 품질은 어떨까? 잘 짜여진 코드라고 할 수 있을까? 과연 좋은 품질의 소스 코드, 좋은 품질의 소프트웨어란 무엇일까요? 그리고 좋은 품질의 소프트웨어를 만들기 위해서는 어떠한 노력을 해야할까요? 소프트웨어 품질의 정의 우선 소프트웨어 품질의 정의에 대해서 먼저 얘기해보겠습니다. 소프트웨어 공학에서 품질은…

Continue reading 코드 품질 관리하기

OpsNow 개발자들의 제주 한달 살기 생활기

안녕하세요. 코로나가 지속된 지도 1년이 넘어가고 있습니다. 그 영향으로 일상 생활이 많이 바뀌었는데요. 그 중 하나로 저희 회사에서는 재택 근무로 업무 환경이 바뀌었습니다. 재택에서 원격으로 소통하고 업무를 하기도 수개월이 됐을 무렵, 저희 스크럼 마스터가 제안을 하게 됩니다. “제주도 한달 살기를 하며, 개발자라면 한번쯤 꿈꾸는 진짜 원격 근무 라이프를 해볼 사람?” 이 한마디를 시작으로 도원결의한 네명은 2021년 4월…

Continue reading OpsNow 개발자들의 제주 한달 살기 생활기

AlertNow – 카카오톡 메신저 알림 기능 출시

이제는 SMS, VoiceCall 뿐만 아니라 카카오톡 메신저로 인시던트 발생 알림을 받아보세요. AlertNow 서비스는 Email, SMS, VoiceCall, 모바일 앱 등 다양한 알림 수단을 이용하여 사용자들에게 인시던트 발생 알림을 전달하고 있습니다. 사용자들은 AlertNow 서비스가 제공하는 알림 수단을 이용하여 인시던트 발생 사실을 빠르게 인지하고 이를 처리할 수 있습니다. AlertNow 서비스에서는 새로운 기능인 카카오톡 메신저 알림 기능을 출시 하였습니다.…

Continue reading AlertNow – 카카오톡 메신저 알림 기능 출시