인프라 27

AWS Copilot으로 컨테이너 서비스 환경 구성하기

최근 회사에서 신규 프로젝트의 컨테이너 기반 서비스 환경을 AWS Copilot을 이용해 1~2일 만에 구축했습니다. 그래서 이번 글에서는 AWS Copilot이 무엇인지, 어떤 특징이 있고, 어떻게 사용할 수 있는지 공유드리려고 합니다. 1. AWS Copilot 이란? 많은 분들이 'Copilot' 이라고 하면, Github의 Copilot을 먼저 떠올리시는데요. 하지만 AWS Copilot은 컨테이너 기반 서비스 환경을 간편하게 빌드, 배포, 운영할 수 있게 해주는 도구입니다. 위 그림은 Copilot에서 제공하는 리소스들을 도식화한 그림입니다. 여기서 app은 하위의 env, pipeline, service들을 묶는 범주입니다. 그리고 실제 인프라로 프로비저닝되는 대상이 env, p..

ECS 의 OutOfMemory 오류 해결과정(feat. 502 에러가 발생하는데요)

이전에 goorm 에서 개최했던 장애 대응 세미나에 참석한 적이 있습니다. 세미나에서 장애를 해결만 하고 넘어가기 보다는 이 과정을 되돌아보며 회고하는 과정이 중요하다고 했던 것이 인상깊었는데요. 마침 사이드 프로젝트 배포 및 테스트를 하던 과정에서 발생한 장애 해결 과정을 기록으로 남기기 위해 글을 작성합니다. 1. 개요 프로젝트 막바지에 QA 를 위해 모든 팀원들이 함께 서비스의 이곳 저곳을 쑤시며 테스트를 하고 있었습니다. 그러던 중 팀원이 보내준 장애 사진으로부터 장애 상황 인지하고 장애 대응이 시작되었습니다. 2. 트러블 슈팅 과정 1) AWS ALB 대상그룹 Health Check 확인 ⇒ 대상그룹에 포함된 인스턴스 정상 확인되어 그 다음으로 ALB 모니터링 지표 확인해보기로 함 2) ALB ..

인프라 2022.09.16

AWS EC2, RDS, VPC 및 배포 자동화 구성하기

위 그림과 같은 인프라 구조를 구성하는것이 목표 입니다. 1. VPC 설정 이름 : issue-tracker-vpc IPv4 CIDR : 10.0.0.0/16 태그 : project, issue-tracker 1.1 private subnet 2개 생성 이름 : issue-tracker-private-subnet-1-ap-northeast-2a private subnet 1 : 10.0.0.0/24 가용 영역 : ap-northeast-2a 태그 : project, issue-tracker 이름 : issue-tracker-private-subnet-2-ap-northeast-2b private subnet 1 : 10.0.1.0/24 가용 영역 : ap-northeast-2b 태그 : project, ..

AWS 프로젝트 환경 구성(VPC, EC2, RDS, CodeDeploy)

1. 프로젝트용 사용자 생성 필요한 권한(FullAccess) VPC RDS EC2 2. VPC 서브넷 구축 Multi AZ 로 구성하지 않은 이유 WAS 와 DB 의 안정적인 서비스를 위해서는 AZ_2 도 구성해야합니다. 하지만, 비용상의 문제로 실습만 해보고 운영하진 않을 예정입니다. AZ_2 가용영역에 private subnet 이 있는 이유 그럼에도 private subnet - 2 를 만든 이유는 RDS 서브넷 그룹이 최소 2개 이상의 가용영역으로 구성된 서브넷들로 구성해야하기 때문입니다. 정석대로라면, NAT Gateway 와 Bastion 을 분리해야 하지만, 비용상의 문제로 2개를 함께 운용하기로 결정하였습니다. (private subnet - 2 VPC 에서 서브넷만 생성해놓고, 인스턴스..

인프라 2022.05.26

Heroku SpringBoot 배포 체크리스트

1. Java 버전 내가 Java8 이 아닌, 다른 버전을 쓰고있는지? build.gradle 의 sourceCompatibility = '1.8' 인지? heroku 관련 아무런 설정을 해주지 않으면, heroku 배포과정의 빌드 단계에서 java8 jdk 를 기본으로 사용합니다. 저는 java11 버전을 사용해서, 빌드 과정에서 오류가 발생했습니다. 해결 프로젝트 루트 경로에 system.properties 파일 생성 java.runtime.version=11(참고 : https://devcenter.heroku.com/articles/java-support#supported-java-versions) 이 설정파일을 추가해주면, heroku 가 java11 jdk 를 사용해서 정상적으로..

리눅스 개발환경 설정 방법들

1. Goorm IDE, Cloud9 같은 클라우드 IDE 서비스 활용 클라우드 IDE 서비스들은, 기본적으로 Linux 컨테이너에를 통해 다양한 언어의 개발환경을 제공합니다. 이런 서비스들을 사용하면 클릭 한번으로 생성할 수 있는 '간편함'과, 웹 브라우저를 실행할 수 있는 환경이라면 어디서든 어떤 기기로든 접속할 수 있다는 장점이 있습니다.2. Docker Dev Environments(PREVIEW) 현재(2021-01-07) Preview인 기능으로, Docker와 VSCode를 미리 설치해야 사용할 수 있습니다. 개발환경을 인식하여 Container 환경을 자동으로 생성해주는 장점이 있습니다. 기본적으로 Linux 기반 개발환경이 제공됩니다.3. AWS EC2, GCP Comput..

인프라/리눅스 2022.01.07

여러가지 쉘의 종류와 쉘 스크립트 활용사례

여러 가지 쉘 종류 쉘 이란? 명령어와 프로그램을 실행할 때 사용하는 인터페이스 입니다. 하드웨어와 프로세스를 제어하는 커널에 사용자가 접근할 수 있는 인터페이스를 제공해 준다. 쉘의 종류 Bourne Shell : sh 최초로 개발된 쉘 C Shell : csh C언어 기반으로된 쉘 Bourne Shell을 기반으로 사용성을 높임 tee-see-Shell : tcsh C Shell에서 명령 행 완성, 편집 기능을 추가한 버전 Bourne-again shell : bash GNU 프로젝트를 위해 작성한 쉘 현재 가장 많이 사용되고 있음 Z Shell : zsh 지금까지 개발된 쉘의 많은 기능이 추가됨 셀 스크립트에 활용한 다양한 사례 - 디스크 상태 및 파일 시스템 점검 디스크의 상태 점검 작업을 통해 ..

인프라 2022.01.07

UNIX와 GNU, 그리고 LINUX

리눅스의 역사와 유닉스와의 차이 들어가기에 앞서, 유닉스와 리눅스의 차이에 대해서 간략하게 정리해봤습니다. 구분 UNIX LINUX 등장 1960년대 후반 1990년대 초 제작자 켄 톰슨 & 데니스 리치 리누스 토발즈 비용 회사별로 다름 대부분 무료 개발주체 다양한 기업 & 비영리 단체 오픈소스 UNIX와 LINUX의 가장 큰 차이는 개방성 였습니다. UNIX ~ GNU ~ LINUX 까지의 역사에서도 역시 가장 핵심적인 키워드는 개방성입니다. 아래에서 조금 더 자세히 알아보겠습니다. UNIX 1960년대 중반 AT&T와 벨 연구소는 함께 멀티 태스킹, 멀티 유저를 지원하는 운영체제 연구 프로젝트를 진행하고 있었습니다. 프로젝트수행하던 연구원들은 효율적인 연구환경을 위해 개발하였고, 그렇게 UNIX가 탄..

인프라 2022.01.07

맥북 에어 M1에서 Docker로 Jenkins 서버 설치하기

최근 공부를 하며, 간단한 SpringBoot 프로젝트를 만들었습니다. 책에서는 AWS를 이용한 CI/CD 자동화 예제가 나와있었는데, 저는 이미 한번 해봤던 내용이었습니다. 그래서 예전에 해보려다 실패했던 Jenkins를 이용해서 한번 해보려고 합니다. Jenkins 설치 및 실행 사실 예전에 도커로 Jenkins 서버를 구축하려고 했습니다.. 그런데 M1 맥북이라 CPU가 arm 아키텍처로 되어있는데, 아직 Jenkins의 공식 도커 이미지는 아직 arm을 지원하지 않습니다. 그래서 포기했다가, 최근 arm에서 사용할 수 있도록 만들어진 이미지를 발견하여 다시 시도해 봤습니다. 참고 ARM Developer ARM용 Jenkins 이미지 Jenkins 공식 이미지 아래는 CPU 아키텍처별 Jenkin..

인프라 2021.11.13