목록Infra, AWS, Linux (12)
개발일지

목표로컬에서 Private 서브넷 EC2 안전하게 접속하기Private EC2에 git clone 받아 프로젝트 수동 배포하기 현 인프라 구조 파악현재 서버 구조는 다음과 같다. (이해를 위해 간소화했다.) 백엔드 서버는 Private Subnet에 존재하기때문에 외부에서의 접근이 불가능하다. 하지만 개발을 하다보면 해당 서버 내 로그 파일을 확인하거나 핫픽스 등 서버에 직접 접속해야하는 경우가 생긴다. 어떻게 접근할 수 있을까?이럴 때는 단순 SSH만으로는 접근이 불가하다. 로컬 PC와 Private EC2 사이를 연결해줄 중개자가 필요하다. 현재 고려한 방안은 크게 두 가지이다.Bastion Host구성이 간단하고 VSCode, Git과의 연동 편리보안 그룹 및 키 관리, 인스턴스 유지 등 관리 포인..
보호되어 있는 글입니다.

문제 상황현재 vscode remote server를 사용해서 SSH 접속을 하고 있다. 종종 SSH 연결이 끊길 때가 있는데, 시간이 지나면 알아서 돌아오기도 하고 실제 인스턴스 자체에는 문제 없어 보였던 적이 많았다. 이 글을 작성하게 된 직접적인 원인은 SSH 접속해서 npm run start하기만 하면 OfflineError가 발생했다. 결론부터 말하자면 RAM 메모리 부족 때문에 나타나는 현상이었다. 이번 글에서는 OfflineError 원인을 찾기 위해 시도 했었던 과정들을 기록해보고자 한다.원인 파악1. 인스턴스 상태 확인대시보드 또는 aws-cli 사용$ aws ec2 describe-instance-status --instance-ids --region ap-northeast-2 인스턴..
개요이전 Lightsail과 Github Actions을 사용해 CICD를 구축했을 때 node 버전 이슈로 계속 실패했던 경험이 있다. 그 외에도 하나하나 수동으로 설치해줘야하고.. 스케일링 하기도 번거롭고.. 어렵고.. 이러한 단점을 보완하기위해 “컨테이너 (Container)” 기술을 사용한다고 한다. 이번 시간에는 AWS ECS를 사용해 컨테이너 기반의 배포 환경을 구축해보고자 한다. 컨테이너 오케스트레이션 (Container Orchestration)Container Orchestration이란 다수의 컨테이너를 관리하고 배포하는 자동화된 시스템을 말한다. 이를 위한 도구로 Kubernetes, Docker Swarm, AWS ECS 등이 있으며 컨테이너의 배포, 스케일링, 로깅 등을 효율적으로..
개요여태껏 서버를 배포한다고 하면 EC2 인스턴스 하나 생성해서 PM2 무중단 배포한게 전부였다. 하지만 실무에 들어가보니 최소 두 개 이상의 인스턴스에 로드밸런싱 하는 것을 볼 수 있었다. 몰려드는 트래픽에 대비해 서버 부하를 줄이기 위한 목적으로 로드밸런싱 한다는 건 알고 있었지만, 공부해보니 “고가용성”이라는 아주 중요한 이유가 하나 더 있었다. PM2 무중단 배포 역시 고가용성 확보를 위한 한 가지 방법이었다. 이번 시간에는 고가용성에 대해 알아보고 이를 위한 아키텍처 구축 방법에 대해 알아보고자 한다. 고가용성(High Availability, HA) 이란?서버, 네트워크, 프로그램 등의 시스템이 최소한의 다운타임(Down Time)으로 지속적으로 정상 운영될 수 있는 능력을 의미한다. 고가용..
개요이제 Github Actions를 사용해 수정된 코드가 Github에 올라올 때마다 실서버에도 자동 반영할 수 있는 파이프라인을 구축해보자. 먼저 프로젝트의 .github/workflows 경로에 yml 파일을 생성한다. 다음과 같이 CI, CD flow를 독립적으로 관리할 것이다.project└── .github └── workflows ├── ci.yml └── cd.yml Continuous Integration (CI)CI는 “지속적 통합”, 즉 개발자들이 코드 변경 사항을 주기적으로 중앙 저장소(Github)로 통합하는 프로세스를 의미한다. 자동화 된 빌드 및 테스트로 코드의 품질을 보장하고 혹시 모를 에러를 조기 발견할 수 있도록 도와준다.name: tes..
개요이번 시간에는 AWS Lightsail로 서버를 빠르게 배포하고 Github Actions으로 CI/CD까지 적용해보고자 한다. 처음 EC2로 서버 배포했을 때를 생각해보면 인스턴스 생성부터가 멘붕이었다. 설정 값 하나하나 모두 지정해줘야하는 것부터 시작해서 너무 복잡하고 어려웠다. Lightsail은 아마존에서 제공하는 가상 서버 서비스로 경량화된 EC2라고 생각하면 될 것 같다. 직접 사용해보면 알겠지만 대시보드를 통해 쉽고 간편하게 관리할 수 있고 EC2와 달리 별다른 설정 값이 필요없다. 따라서 규모가 크지 않고 부가 기능을 필요로하지 않는다면 Lightsail를 사용하는 것이 더 효율적일 수 있을 것이다. Ligthsail 인스턴스 생성 및 프로젝트 배포하기Lightsail > Instan..