인프라 관련 일을 할 때마다 어렵지만 재밌고 공부하는 재미가 쏠쏠한데 나중에 DevOps도 해보고 싶네요
DNS 설정은 아임웹을 사용했고, 깃허브 웹훅을 Jenkins와 연동해서 자동 빌드 테스트까지 해보겠습니다!
1. 프로젝트 생성 후 웹훅 설정
2. AWS 인스턴스 생성
3. 아임웹 추가
1) 환경설정 > 도메인
2) 보안그룹 > 인바운드 규칙
보안그룹 생성
netstat -tulpn
→ 위의 포트가 사용 안 하고 있는 포트인지 확인 필요
4. 대상 그룹 생성
로드 밸런싱 > 대상 그룹 > 대상 그룹 생성
5. 로드밸런서 DNS 연동
6. Jenkins 설정
1) Jenkins 관리 > 시스템 설정 > SSH Server 추가
Hostname : 인스턴스 프라이빗 IPv4 주소
2) Jenkins 새로운 Item
유의할 점 : 깃허브 주소, 폴더 명
GitHub hook으로 develop 자동 빌드로 세팅
Execute shell : 빌드 시 실행할 쉘 스크립트 설정
# jenkins workspace로 이동
cd /var/jenkins_home/workspace
# 빌드 후 생성된 코드파일을 tar 파일로 생성
tar -cvf dev-test-server.tar dev-test-server
# tar 파일 위치 이동
mv dev-test-server.tar dev-test-server/dev-test-server.tar
방금 저장한 젠킨스 SSH Server 등록!
# 개발서버로 이동
cd /home/ec2-user/dev-test-server
# tar 파일 풀기
tar -xvf dev-test-server.tar
# start shell 스크립트 실행
./start.sh
빌드 종료 후 실행할 shell 명령 설정
# tar 파일 삭제
rm /var/jenkins_home/workspace/dev-test-server/dev-test-server.tar
여기서부터는 젠킨스 서버 - 개발 서버 세팅!
1. 젠킨스 서버 접속
cd /jenkins/workspace/
sudo mkdir dev-test-server
# 여기서 폴더명은 아까 젠킨스에서 만들어줬던 폴더명과 동일하게 !!!!
2. 개발 서버 접속
# 소스코드 풀 폴더 생성
sudo mkdir dev-test-server && cd dev-test-server
sudo vi ecosystem.config.js
ecosystem.config.js 파일 생성
'use strict';
module.exports = {
apps: [
{
name: "dev-test-server-API", // pm2로 실행한 프로세스 목록에서 이 애플리케이션의 이름으로 지정될 문자열
namespace: "develop",
script: "dev-test-server/dist/main.js", // pm2로 실행될 파일 경로
watch: false, // 파일이 변경되면 자동으로 재실행 (true || false)
ignore_watch : ["logs"],
env: {
"NODE_ENV": "development" // 개발환경시 적용될 설정 지정
},
env_production: {
"NODE_ENV": "production" // 배포환경시 적용될 설정 지정
}
}
]
};
start.sh 쉘 스크립트 파일 생성
sudo vi start.sh
#!/bin/bash
cd /home/ec2-user/dev-test-server/dev-test-server
yarn install
npm run build
cd /home/ec2-user/dev-test-server
pm2 restart ecosystem.config.js
Lambda는 서버를 따로 두지 않고도 코드를 실행할 수 있는 이벤트 중심의 서비스입니다. 작은 단위의 API를 만들고 싶은데 EC2 인스턴스를 생성하기에는 규모와 비용이 너무 커지기 때문에 간편하게 코드를 작성하고 업로드하면 API 사용이 가능합니다! 비용도 사용한 만큼만 지불하면 되기 때문에 너무 좋은 서비스라고 생각합니다.
1. IAM 역할 생성
Lambda를 호출할 수 있는 권한을 가진 IAM을 생성해 줍니다. SQSFullAccess 권한과 LambdaBasicExecutionRole 권한을 넣어줍니다.
2. Lambda 함수 생성
이름과 함수를 어떤 언어로 작성할 것인지 고르고 실행 역할에는 기존 역할 사용을 클릭한 후 방금 생성해 준 역할을 선택해 줍니다. kakao-messaging이라는 이름으로 생성해 볼게요!
3. Lambda 트리거 구성
Lambda에 SQS 트리거를 추가해 줍니다! 트리거에 추가된 SQS에 쌓일 때마다 Lambda가 실행됩니다.
트리거가 생겼습니다!
4. Lambda 환경변수 추가
이 부분은 자유이지만 저는 환경변수를 생성해서 코드를 작성해 보도록 하겠습니다! 구성 > 환경 변수 > 편집
4. Lambda 로그 스트림 확인
Lambda 로그는 CloudWatch에 쌓이고 있습니다. 로그 확인은 모니터링 > CloudWatch 로그 확인에서 확인할 수 있습니다.