엔지니어링/DevOps
CodeDeploy에서 저장하는 배포본의 수 변경하기 (용량 줄이기)
CodeDeploy에서 저장하는 배포본의 수 변경하기 (용량 줄이기)
2022.02.19AWS CodeDeploy를 이용해서 EC2 에 Srpingboot 어플리케이션을 배포하고 있다. 그런데 EC2에 코드 디플로이를 통해 배포된 최근 5개의 이력과 파일이 관리되기 때문에 jar 파일이 뚱뚱해질 수록 EC2의 용량이 차지하게 된다. 코드디플로이에서 default로 5개의 이력을 저장하기 떄문에 jar 파일용량 * 5개만큼의 저장 공간을 차지하게 된다. 처음에 개발서버에서 낮은 용량으로 서비스를 띄울 때에는 별다른 이슈가 없었다. 하지만 기능들과 의존성이 점점 추가되면서 jar 파일 하나가 차지하고 있는 용량이 커지고, 이게 5개 만큼 누적되면서 용량이 부족해지는 현상이 생겼다. 그래서 코드디플로이에서 자동으로 인스턴스 내에 저장해주는 배포 이력의 수를 조절할 필요가 생겼다. CodeDepl..
Spring Boot 배포 자동화(CI/CD) : Github Actions와 AWS CodeDeploy
Spring Boot 배포 자동화(CI/CD) : Github Actions와 AWS CodeDeploy
2021.10.10먼저 AWS Cloud 환경에서 필요한 선행 작업을 안내하고, Github Actions와 AWS CodeDeploy에서 사용할 스크립트에 대해 설명하겠다. 👉 AWS 사전 구성하기 1. IAM 사용자 생성 디플로이용 계정을 만들어 아래 정책을 연결 AmazonS3FullAccess AWSCodeDeployFullAccess 이 사용자는 Github Actions에서 S3, CodeDeploy에 접근하기 위해 사용하는 IAM 계정이다. 액세스키와 시크릿키를 잘 저장해두자. Github Secret에 저장할거다. 참고 : 아래 EC2, CodeDeploy에서 생성하는 IAM 서비스역할과 사용자는 다르다. Github Secret에 등록 DEV_AWS_ACCESS_KEY_DEPLOY : 액세스키 등록 DEV..
AWS 계정들간의 ACM 인증서 공유하기
AWS 계정들간의 ACM 인증서 공유하기
2021.08.10회사에서 AWS 계정별로 자원을 할당하여 사용중이기 때문에, 각 계정의 자원을 서로 공유해야할 필요가 생겼다. 특정 계정에 있는 도메인 ACM 인증서를 다른 계정에 공유하는 방법을 알아보겠다. ACM 자체는 공유되지 않으나, 다른 계정에서 동일 ACM 인증서를 활용할 수 있는 방법이 있음 만약 공유받을 도메인으로 ACM을 설정한다면, Route 53 설정을 먼저 진행하는 것이 좋음 AWS 계정들간의 Route 53 공유하기 참고 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/acm-export-certificate/ 목표 prod 계정에 example.com 도메인으로 ACM 인증서 존재하는 상태 dev 계정에 dev.example.com 도메..
Connection Pool이 없는 언어(PHP, Ruby)의 DB Connection 관리
Connection Pool이 없는 언어(PHP, Ruby)의 DB Connection 관리
2021.07.16PHP와 Ruby는 Connection Pool 기능이 없다! 위와 같이 Connection Pool 기능이 없는 언어의 경우, DB 접속을 위해 Connection Pool을 관리해주는 기능을 사용하는 것이 좋다. 만약 DB로 AWS RDS를 사용하는 경우 AWS RDS Proxy는 괜찮은 대안이다. 자체적으로 Connection Pool 기능일 제공하는 DB를 이용한다면 모를까, 커넥션 풀을 하지 못하는 언어에서는 Connection Pool 없이 DB 접속 시 사용자 수가 몰리면 DB가 죽을 수 있다 (웹서버가 죽지 않았는데도!) 자세한 내용은 AWS 가이드를 참고하자! PHP 및 Ruby on Rails와 같은 언어와 프레임워크를 사용하는 애플리케이션은 일반적으로 프록시를 사용하는 것이 좋습니다...
[Firebase] Firebase Authentication
[Firebase] Firebase Authentication
2021.03.16Firebase Authentication Google Firebase는 사용자 인증 시 필요한 백엔드 서비스와 인증 UI를 제공한다. 사용자 로그인 처리 시 Firebase UI를 통한 인증도 있고, SDK를 사용해 하나 이상의 로그인을 제공해주는 방법이 있다. 대부분의 출처는 노마드코더 강의 와 Firebase 공식문서 임을 밝힌다. 샘플코드 는 Github에 올려두었다 인증 방식 이메일/비밀번호 기반 익명 제휴 공급업체(Google, Facebook, Twitter, Github) 통합 전화번호 인증 커스텀 인증 시스템 통합 작동 원리 사용자에게 앱에 로그인 하기 위해 인증 정보를 요청 (이메일/패스워드 혹은 Google/Facebook 등 제휴업체 로그인 방식) Firebase는 우리를 대신해 사..
[Firebase] Cloud Firestore
[Firebase] Cloud Firestore
2021.03.11Cloud firestore Cloud firestore는 Firebase에서 제공하는 NoSQL 데이터베이스이다. 정말정말 유연하다. Firebase를 이용하니까 간단하게 Auth, DB 처리까지 손쉽게 할 수 있었다. 본격적인 서비스에 도입하기에는 Firebase 자체에 너무 종속적이기 때문에 고객의 정보를 담기에는 부담스러울 수 있지만, 프로토타입이나 일상용 간편 기능을 만들기에 좋을 것 같다 :) 사실 단순한 CRUD 기능으로 구현된 대부분의 서비스는 모두 Firebase를 이용해도 되지 않을까 싶다. Firebase를 진득하게(?) 써보지 않아서 확장성의 문제가 얼마나 있을 지는 모르겠지만, 지금 사용 경험으로는 충분히 합격이다. 대부분의 출처는 노마드코더 강의 와 Firebase 공식문서 임을..
[Firebase] Firebase Security
[Firebase] Firebase Security
2021.03.05Firebase Security Firebaee 보안 규칙 가이드 보안 규칙 작성 방법 GCP API Key (Firebase Project 접근 API Key 관리) API key 생성 Firebase SDK 적용 및 사용예제 샘플코드 API key 보안 적용 API Key를 사용하는 리액트의 호스팅 도메인(github page), localhost, Firebase Project 도메인 2개 등록 Firebase Auth 접근 가능 도메인 지정 특정 도메인에서만 접근을 허용하기 때문에 타인이 Firebase API Key를 가지고 있더라도 함부로 접근할 수 없다. This domain (hyunah-iia.githun.io) is not authorized to run this operation. A..
Nginx 기본 환경 설정
Nginx 기본 환경 설정
2021.02.23Nginx 기본 환경 설정 Nginx는 환경 설정 텍스트 파일로 여러 가지 값을 지정해 Nginx 설정을 할 수 있도록 지원한다. Nginx 설치 시 기본적으로 설정하는 환경설정 값들을 알아보겠다. 참고 링크 아래 블로그 글이 도움이 많이 되었다. Nginx 구조, 환경설정 지시어의 의미, 지시어별 권장 수치, 표준 설정과 서버 성능 테스트 방법도 제안하고 있다. [Nginx] 엔진엑스 기본 환경 설정 Nginx proxy & Linux 최적화 셋팅 NGINX 기본 환경 설정 튜닝 및 설명 가상호스팅이란? Ubuntu 16.04에 Nginx 설치하기 기본 설정 nginx.conf : 어플리케이션의 기본 환경 설정 아래 명령어를 이용해 환경 파일을 찾을 수 있다. find / -name nginx.conf..
[Firebase] 프로젝트 생성 및 SDK 추가 간단 가이드
[Firebase] 프로젝트 생성 및 SDK 추가 간단 가이드
2020.12.24Firebase 프로젝트 생성 및 앱 등록 (ex: Web) Web 프로젝트(ex: React)에 Firebase SDK 추가 Firebase를 앱에 추가하는 방법은 4가지가 있으며, 그 중 npm을 통해 SDK 설치함 https://firebase.google.com/docs/web/setup?authuser=0#using-module-bundlers // 프로젝트의 루트 디렉토리로 이동 $ npm install --save firebase Firebase CLI 설치 (나중에 해도 됨) Firebase 호스팅으로 사이트를 호스팅하려면 Firebase CLI(명령줄 도구)가 필요함 npm install -g firebase-tools Firebase 호스팅에 배포 (나중에 해도 됨) // 지금 배포하려..
Firebase, Amplify 언제 써야할까?
Firebase, Amplify 언제 써야할까?
2020.12.23요약 : 빠르고 저렴하게 프로토타입 제작할 때 쓴다. 기능 장점 인증 10분 백엔드 작업 없이 DB 저장 웬만한 모든 기능들을 쉽게 제작할 수 있음(인증, 업로드, Push, CRUD 등) ⇒ 아이디어를 빠른 시간 내에 제작해서 시도해볼 수 있음 단점 GCP/AWS 플랫폼에 강한 종속 (섬세한 컨트롤 X, 추후 분리도 어려움) 각 플랫폼의 서버와 DB를 빌려쓰는 것이기 때문에 내가 소유하고 있지 않음 ⇒ 실제 프로젝트에는 부적합 가격 Firebase : https://firebase.google.com/pricing Amplify : https://aws.amazon.com/ko/amplify/pricing/ 장점 초기 비용(?)이 거의 들지 않는다. 인증(무료, 전화인증은 만 건까지 무료), Cloud..
리눅스 메모리 용량 확인과 로그파일 관리
리눅스 메모리 용량 확인과 로그파일 관리
2020.10.28보통 서버가 죽는 이유는 메모리 문제일 가능성이 높다. 프로세스별로 점유하고 있는 메모리가 무척 높거나, 혹은 서버 용량이 거의 다 찼을 때 비정상적으로 종료된다.서버 상태를 확인할 수 있는 간단 명령어df -h : 디스크 사용량ps -ef --sort -rss : 메모리 사용량순 프로세스 조회대체로 로그 파일이 너무 많이 쌓여서 서버가 죽을 때가 많은데, 주기적으로 들어가서 삭제하는 것 보다는 정책을 세워 관리하는 것이 좋다. 예를 들어 개발기 같은 경우 일주일이 지나면 로그파일 압축, 한 달이 지나면 압축된 로그파일 삭제 와 같은 정책이 있다면 이를 자동으로 수행하는 shell 파일을 만들어 주기적으로 수행되도록 배치 등록을 하면 된다. (운영기의 로그는 S3나 별도의 스토리지 서버에 저장해두고 몇 ..
네이버 클라우드 DB서버에 공인IP 없이 외부 원격 접속하기
네이버 클라우드 DB서버에 공인IP 없이 외부 원격 접속하기
2020.08.14처음에는 네비어 클라우드 플랫폼(NCP)에서 말하는 포트포워딩 이 무슨 의미인지 몰랐었다. 메뉴 뒤적거리고, 가이드를 여러 개 읽어본 뒤에야 조금 감이 잡혔다. 네이버 클라우드 플랫폼(NCP) 구조 간략하게 구조에 대해서 설명하겠다. 네이버 공식 가이드 : https://docs.ncloud.com/ko/database/database-9-10.html 파란색 부분은 NCP 계정 내 사설 네트워크 영역이다. 처음 계정을 생성하면 NCP에서 제공하는 네트워크 영역이 할당된다. 예제에서는 106.x.x.x가 나에게 할당된 사설IP 영역이라고 보면 된다. 노란색 부분은 각 인스턴스에 대한 부분이다. 인스턴스는 NCP에서 제공하는 사설 네트워크 영역에 생성되고, 각 인스턴스별로 사설 네트워크 망에서 접근할 수 ..