AWS의 세션 매니저를 개량한 gossm 소개

AWS Systems Manager에 등록된 관리형 인스턴스는 EC2의 관리를 매우 용이하게 해주고 있습니다. SSH 세션을 관리하는 세션 매니저는 IAM 기반으로 SSH 접근 제어가 가능하고 AWS CLI를 이용하여 로컬 호스트에서도 손쉽게, 안전하게 사용이 가능하다는 장점이 있습니다. 물론 플러그인의 설치가 요구되기는 합니다. AWS CLI의 한계 AWS CLI는 AWS에서 제공하는 SDK 기능을 단순히 CLI 환경으로 제공할 뿐이라서 기능 자체가…

Continue reading AWS의 세션 매니저를 개량한 gossm 소개

CloudWatch 에이전트를 손쉽게 설치하는 방법

AWS에서 EC2에 CloudWatch 에이전트를 설치하는 두 가지 방법에 대해서 알아보고 자동 설치를 위한 방법과 이점을 공유하고자 합니다. 기존 OpsNow의 한 서비스에서 진행하던 수동 설치 방법이 어떻게 대체될 수 있는지를 보시면서 도움되기를 바랍니다. 수동 설치 먼저, 사전에 준비한 CloudWatch 에이전트의 설정에 대한 config.json 파일을 EC2로 옮기고, 링크에서 해당하는 OS에 따른 에이전트 설치 파일을 다운로드 합니다. 다운로드한…

Continue reading CloudWatch 에이전트를 손쉽게 설치하는 방법

Maven 또는 Gradle 프로젝트를 도커 이미지로 빌드하기

많은 고객들이 기존 온프레미스 환경에서 클라우드로 이전하였음에도 서비스 형태나 어플리케이션 배포는 기존 레거시 형태를 사용하는 경우가 많습니다. EC2를 직접 생성하고 그 안에 SSH로 접속해서 어플리케이션을 배포하는 방법은 EC2를 온디맨드로 사용할 수 있다는 것 외에는 크게 달라진 것이 없습니다. 기존 어플리케이션을 도커로 만들게 된다면, 도커 기반의 다양한 기능과 서비스를 이용하여 좀 더 배포에 용이한 CI/CD 구조를…

Continue reading Maven 또는 Gradle 프로젝트를 도커 이미지로 빌드하기

신규 발표된 EBS gp3로의 전환

2020년 AWS re:Invent에서 발표된 새로운 소식들 중에 하나가 바로 EBS (Elastic Block Store)의 신규 볼륨 타입인 gp3 (General Purpose SSD v3)에 대한 발표 입니다. 그리고 이 소식을 접하자마자 OpsNow에서는 기존 EBS를 gp2에서 gp3로 전환하기 위한 여정을 시작했습니다. 이는 gp3가 가격과 성능 모든 면에서 유리하기 때문이기도 하고, 용량과 IOPS, 처리량 (Throughput)을 분리하여 조절할 수 있기 때문입니다.…

Continue reading 신규 발표된 EBS gp3로의 전환

AWS에서 프라이빗 도메인 사용하기

AWS에서는 어떤 웹 서비스를 구현할 때 3 계층 구조 (3 Tier Architecture) 를 따르도록 권장하고 있습니다. 기본적으로 사용자에게 노출되는 웹 서버, API, 그리고 데이터베이스 순서대로 계층을 구분하고, 각 계층은 인접한 계층으로만 엑세스가 가능하도록 제한함으로써 보안을 강화하는 구조입니다. 서비스의 규모가 점차 커지게 되면 여러 계정 혹은 VPC를 이용하여 각 서비스의 모듈을 별도로 개발하고 이런 모듈들을 모아서…

Continue reading AWS에서 프라이빗 도메인 사용하기

암호화된 EBS 스냅샷을 다른 계정에 공유하기

AWS에서 Best Practice로 강조하는 Encryption at Rest를 지키기 위해서는 EBS (Elastic Block Store) 볼륨을 기본적으로 암호화하는 것이 좋습니다. 암호화 키는 KMS (Key Management Service)에서 제공되는 고객 관리형 키와 AWS 관리형 키, 두 가지가 있습니다. 이처럼 EBS 볼륨을 암호화하는 것은 보안을 향상시키는 좋은 방법이지만 EBS의 스냅샷을 공유하기 위해서는 추가적인 과정을 요구하게 됩니다. 이번 글에서는 이러한 EBS…

Continue reading 암호화된 EBS 스냅샷을 다른 계정에 공유하기

AWS 관리형 인스턴스를 사용해야만 하는 이유

AWS 관리형 인스턴스 (Managed Instance)는 문자 그대로 AWS를 통해서 관리하는 인스턴스를 의미합니다. 본래 EC2는 AWS에서 인프라만 제공하고 그 외의 모든 관리와 책임은 고객이 가져가는 IaaS에 속합니다. 그런데, AWS Systems Manager 라는 서비스를 이용하게 되면, EC2에 대한 일부 권한을 AWS에 위임하여 조금 더 편리하게 EC2를 관리할 수 있습니다. 관리형 인스턴스 목록에 EC2가 포함되면 크게 3가지 작업을…

Continue reading AWS 관리형 인스턴스를 사용해야만 하는 이유

인텔리제이가 Autowired를 뱉어낼 때 단호하게 대처하는 방법

인텔리제이(IntelliJ) 사용 시에 “Field injection is not recommended” 메시지에 고통받은 경험이 있나요? 그동안 의존관계를 주입할 때, 큰 고민 없이 관례처럼 @Autowired를 사용하여 필드주입 방식을 사용해 왔습니다. 이클립스(Eclipse)에서 @Autowired를 사용할 때, 마우스를 오버하면 이런저런 설명을 제공하기는 하지만 별 다른 경고나 예외 메시지를 보여주지 않기 때문입니다. (IDE 설정에 따라 다를 수 있음) 사실 @Autowired를 사용하는 방법은 여러…

Continue reading 인텔리제이가 Autowired를 뱉어낼 때 단호하게 대처하는 방법

코드에서 암호를 안전하게 사용할 방법을 찾아서…

개발을 하다가 보면 필연적으로 마주치는 문제가 있습니다. 바로 데이터베이스의 암호와 같은 민감한 데이터를 어떻게 저장할 것인가 하는 문제입니다. 코드에 하드코딩을 할 수는 없고, 다른 곳에 암호화를 해서 저장을 해도 결국 복호화를 할 또 다른 암호는 또 다른 어딘가에 있어야 하고… 그렇다고 이 과정을 무한히 반복할 수도 없겠지요. 옛날이나 지금도 가장 널리 사용되는, 안전하지 않은 방법은…

Continue reading 코드에서 암호를 안전하게 사용할 방법을 찾아서…

AWS Athena의 권한 관리와 클라이언트 접속

AWS에서는 특이하게도 매일 수집되는 빌링 데이터가 과거 데이터의 정합성을 보장하지 않습니다. 그래서 항상 한 달치 빌링 데이터 전체를 제공합니다. 매일 수집되는 데이터가 다르다는 가정 하에, OpsNow에서도 데이터를 누적하여 업데이트 하는 것이 아니라, 매번 수집된 데이터를 별도로 저장하고 있습니다. 수집된 OpsNow의 빌링 데이터는 EMR을 이용한 스파크 클러스터를 거쳐서 S3에 저장됩니다. 단순히 저장만 해놓게 되면 데이터를 분석/이용하기가…

Continue reading AWS Athena의 권한 관리와 클라이언트 접속