[CloudType] AWS에서 cloudtype으로 DB 마이그레이션하기
·
DevOps/CloudType
개요 앞편에서 cloudtype의 MariaDB를 생성해주었다. 이에 이어서 AWS MySQL로부터 cloudtype MariaDB로 마이그레이션을 함으로써 비용을 절약해보자.  가장 먼저 cloudtype 프로젝트 전체 설정(나의 경우 koala)에서 TCP 허용이 되어있는지 확인하자.    1) RDS 외부 접근을 위한 작업일단 마이그레이션을 하려면 AWS RDS에 직접 내 로컬에서 접근이 가능해야 한다.  1-1) 마스터 암호 설정DB 수정을 통해 마스터 암호를 설정하자.  1-2) 퍼블릭 액세스 허용  1-3) 보안그룹이 설정되어 있다면 인바운드에 나의 IP 등록DB에 보안그룹이 설정되어있다면, 나의 IP가 접근 가능하도록 정보를 등록해준다. 2) 로컬 터미널에서 명령어를 통해 AWS RDS에 접..
[CloudType] cloudtype으로 DB 호스팅 비용 줄이기
·
DevOps/CloudType
개요koala 프로젝트를 하다가 첫 난관(?)이 생겼다..! 바로 서버 비용이 없다는 것 이 설계에 맞춰서 클라우드 환경을 구축하기 전에, "이렇게 가면 비용이 꽤 들 것같은데 우리 얼마 쓰고 있지?" 확인하는 것에서부터 서버 비용에 대한 걱정이 시작되었다.. ㅋㅋ🤣     아예 cloudtype 서비스로 옮겨보자!사실 첫 시도에서는 AWS를 이용하지 않고 아예 cloudtype을 사용하자는 생각이었다. 하지만 cloudtype을 구축하는 과정에서 만난 문제들을 해결하지 못했고, 가장 비용이 많이 드는 RDS만이라도 cloudtype을 이용하자는 결론을 도출하게 되었다.  cloudtype은 비교적 합리적인 비용으로 웹사이트/데이터베이스 등을 호스팅할 수 있는 국내 서비스다. 디스코드 채널에서 실시간으..
[DevOps] 멀티모듈 프로젝트 CI/CD 적용 - 설계 구상 편
·
DevOps/DevOps
개요실제 운영 환경 인프라를 구축하기 위해 설계를 팀에 공유해보기로 하였다. 사실 3달 정도 전에 Github Actions + Elastic Beanstalk으로 실습을 해보았으나, 실패했던 경험이 있기에 다시 돌아와서 설계 과정을 세세히 기록해본다. 또한, 이전에는 사용해보고 싶었던 기술(Jenkins)과 추천 받은 기술로 구성하였다면, 이번엔 온전히 내 논리와 지식을 활용하여, 배포를 하자마자 사용자가 생길 우리 서버..🤗의 아키텍처를 구상해보려고 한다.   1) 이전 시도 복기와 현재 상황나에게 가장 까다롭게 다가오는 것은 멀티 모듈 설계와 AWS 사용이다. 이 까다로운 문제를 하나씩 풀어 나가는 과정을 작성해보자..! 1-1) 모듈 구조 파악하기 core(공통 라이브러리)admin(관리자 모듈..
[AWS] AWS 하나의 LB로 여러 서비스 운영하기
·
DevOps/AWS
개요지난 포스팅에서 하나의 로드밸런서로 여러 서브도메인, 서비스를 운영하는 것을 GCP를 통해 구축해보았다. (GCP를 사용하지 않더라도 앞의 글을 읽는 것을 추천한다.)  [DevOps] 하나의 LB로 여러 서비스 운영하기개요로드 밸런서는 운영관리 입장에서 상당히 많은 편의성을 제공한다.그래서 그런지 규모가 작은 프로젝트 즉, "부하 분산"이 필요없는 프로젝트임에도 불구하고 정말 많은 사람들이 로드 밸cobinding.tistory.com 이번에는 AWS의 로드밸런서와 라우팅 설정을 통해서 하나의 LB로 서브도메인을 구분하는 것을 세팅해보도록 한다.  AWS로 구축할 웹사이트는 user와 admin이 구별되어있다. user-main.example.com  admin-main.example.com 이 두..
[GCP] GCP 하나의 LB로 여러 서비스 운영하기
·
DevOps/GCP
개요로드 밸런서는 운영관리 입장에서 상당히 많은 편의성을 제공한다.그래서 그런지 규모가 작은 프로젝트 즉, "부하 분산"이 필요없는 프로젝트임에도 불구하고 정말 많은 사람들이 로드 밸런서를 활용한다. 그런데 나의 경우, 작은 프로젝트에 LB를 쓰는게 그 기술의 취지에 맞지 않고, 그렇기에 많은 자원이 낭비가 된다는 생각에 쓰기가 싫었다. (뭔가 괜히 패배하는 기분이랄까..?) 여기서부터 지옥 시작이었다.  포트로 분리된 서버에 LB 없이 하나의 서버로 각각의 포트에 SSL을 적용하는 테스크를 진행 (이 가설엔 논점이 굉장히 많은데, 다른 포스팅에서 다뤄보겠다.)했는데, 사실 이건 로드 밸런서로 뚝딱뚝딱 1-2시간이면 할 수 있는 업무다. [사건의 발단🥹] 그런데 위와 같은 이유로 로드밸런서를 사용하기 ..
[AWS] public & private subnet 분리로 서버 운영하기
·
DevOps/AWS
개요AWS 서비스를 조금 더 보안성 있게 운영하고자 한다면, 한 VPC 내의 subnet을 분리하여 사용하는 방법이 있다.이번 프로젝트는 앞으로 동아리에서 쭉 사용할 서비스이므로 처음부터 보안에 유의하여 설계를 해야겠다 다짐했다!!  그래서 이 포스팅을 통해 어떤 과정을 겪었는지 정리해보려 한다.AWS에서 자체적으로 해주는 것이 많아서 생각보다 많이 간단했다. VPC 만들기AWS 계정을 생성하고 나면 기본 VPC는 존재한다. 별도의 퍼스널 서브넷 세팅을 위해 새로 VPC를 생성하자. 생성할 리소스 옵션 중 VPC만/VPC 등 두 가지가 있는데, private subnet에 RDS를 두려면 반드시 후자를 선택해야 한다. RDS 생성 시에도 RDS subnet을 세팅하게 되는데 이때 subnet은 두 개 이..
[AWS] AWS CLI 설정 및 활용하기
·
DevOps/AWS
개요GCP를 사용하면서 이 글 과 같이 google cloud SDK라는 걸 통해 콘솔에 접근하고 여러 클라우드 서비스를 이용하였다.AWS도 이와 마찬가지로 SDK, CLI(명확하게 말하자면 SDK와 CLI는 다른 것이긴 하다.)를 통해 콘솔에 접근하는 서비스가 있다.이걸 설정하고 AWS 서비스를 이용해보자! 우선 root 계정과 그로부터 admin 권한을 할당 받은 계정이 있다고 가정한다. AWS CLI latest 다운sudo curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip" 해당 문서는 MacOS 사용자 기준으로 다운 방법을 제시하고 있다. 그냥 위 명령어를 iterm or terminal에 입력해주면 된..
[GCP] Cloud Logging 에러 사항을 메일로 모니터링하기
·
DevOps/GCP
개요예기치 못한 에러 때문에 개발자가 모르는 사이 서비스가 갑자기 다운될 수도 있다. 이러한 이슈를 방지하기 위해 로그를 모니터링하는 것은 매우 중요한 일이며,  메일, slack, chat 등으로 실시간 알림을 통해 로그를 모니터링할 수 있다.  Cloud Logging  Cloud Logging을 보면 정말 많은 로그들이 실시간으로 쌓이고 있다. 이번 포스팅에서는 Error 관련 로그가 발생했을 때 회사의 DEV 계정으로 메일 알림을 전송하는 것을 세팅해보도록 한다.  Cloud Logging의 가장 우측에 알림 만들기라는 버튼을 클릭하자.원래 이 서비스는 없었고 StackDriver라는 서비스로 지원됐었는데, 새로 생겼다고 한다. 그래서 Cloud Logging 관련 리서치를 하면 여전히 Stack..
[GCP] GCP 로드 밸런서와 Cloud NAT 구축
·
DevOps/GCP
개요회사 서버 개편 작업을 위해서 다음과 같은 작업을 수행하였다.Instance Template, Instance Group 생성 (https://cobinding.tistory.com/229)Cloud NAT Gateway 구축 (https://cobinding.tistory.com/244)  [GCP] Cloud Nat Gateway 구축 과정 및 작동 방식요구사항 서버 상황 현재 VM 인스턴스의 외부 ip는 임시 ip로 되어있다. 배포는 수동으로 “인스턴스 바꾸기”를 통해서 새로운 인스턴스 이름과 ip를 부여받는 방식으로 운영하고 있다. 인스턴스cobinding.tistory.com [GCP] Instance Template과 Instance Group을 통한 VM 서버 생성과 블루-그린 배포개요 ..
[GCP] Cloud NAT 구축 과정 및 작동 방식
·
DevOps/GCP
개요서버 상황배포는 “인스턴스 바꾸기”를 통해서 새로운 인스턴스 이름과 ip를 부여받는 방식으로 운영하고 있다.인스턴스 바꾸기를 통해 인스턴스를 삭제하고 교체하면, 인스턴스의 외부 ip도 인스턴스가 교체될 때마다 달라진다. 문제 상황NICE API 요청을 위해 ip 주소가 바뀔 때마다 화이트리스트에 등록을 해야함VM인스턴스에서 도는 웹사이트는 WebClient를 통해서 NICE 서버와 http 통신을 한다. 이때, VM 인스턴스의 외부 ip가 HTTP 통신 요청 헤더의 host 필드값으로 들어가게 된다. NICE 측에서는 이 요청값을 통해, 화이트리스트에 등록된 IP인지 아닌지 확인을 한다. ➡️ 따라서 IP를 번거롭게 매번 등록해야 한다. 위험성도 높다.인스턴스 바꾸기를 통해 배포가 될 때마다 외부 i..
[GCP] Instance Template과 Instance Group을 통한 VM 서버 생성과 블루-그린 배포
·
DevOps/GCP
개요웹사이트 개편 작업 이후 도입된 외부 API는 요청 헤더값에 우리 웹사이트의 vm 인스턴스 정보가 담긴다. 이러한 VM 인스턴스 IP 주소는 유동 IP로 설정되어있어서, IP가 변경될 때마다(배포할 때마다 - 블루∙그린배포) 매번 VM 인스턴스의 IP를 화이트리스트에 업로드해야 한다. 이러한 수동 업데이트 방식은 문제의 소지가 다분하다.  이 문제를 해결하기 위한 개편작업을 담당하였다. 그 과정을 시리즈로 블로그에 정리해보려 한다. 이 포스팅은 그 시작점인 Instance Template의 설정과 MIG이다.  Instance Template Instance Template은 MIG를 통해 서버를 운영하기 위해서 가상머신 생성을 위한 일종의 규칙 사항들을 정리해 놓은 것이다.GCP의 Instance ..
[GCP] Cloud Build 커밋/푸시없이 트리거 실행하기
·
DevOps/GCP
개요Cloud Build 작업을 하면서 트리거 테스트를 위해 계속 커밋을 남겼었다.그런데 공용 Repository에 커밋 및 푸시를 남기지 않고 트리거를 실행하고, 로그를 볼 수 있는 방법을 찾아서 공유한다.GCP는 상대적으로 자료가 많이 없어서 작업이 꽤 힘들다..🥹 GCP를 사용하는 동안 꾸준히 기록해보자!!  Cloud Build 트리거 실행 Cloud Build > 트리거 경로로 들어가서 빌드 테스트를 실행하고 싶은 트리거의 실행 버튼을 누른다.  그럼 위와 같이 트리거를 실행할 트리거 이름과 저장소, 브랜치 입력창이 나온다. 여기서 Cloud Build에 트리거 대상으로 설정해준 브랜치를 입력하고 트리거 실행을 하면된다. 그럼 바로 빌드가 되고 원격 저장소에 commit이 남지 않는다...! ..
[Redis] Redis 4편. 운영 방식과 호스팅
·
DevOps/DevOps
개요 SpringBoot와 Redis사용법을 redis-cli을 통해 로컬 환경에서 익혔다면, 호스팅 방법과 운영 방식에 대해 공부하고, 결정해보자. 데이터 관리 방식 Redis의 장점은 인메모리 방식으로 모든 데이터를 RAM에 저장하여 입출력 성능을 끌어올리는 것이다. 이러한 장점을 잘 사용하려면 어떤 데이터를, 어떻게 사용할지에 대해 잘 정의하고 이를 관리하는 방식에 대한 정의가 필요하다. 캐싱 전략 레디스 캐싱 전략은 크게 4 가지이다. 보통 읽기/쓰기 패턴을 고려하여 4 가지 전략 중 한 가지를 택하거나 2 가지 이상의 전략을 결합하여 사용한다. 레디스 DB에 쓰기 작업을 진행할 때 주의할 점은 인메모리 데이터베이스 특성상 영속성이 보장되지 않는다는 점이다. 따라서 이러한 데이터의 휘발성을 보완하..
[Redis] Redis 3편. Spring Boot와 Redis | Lettuce, RedisTemplate, RedisRepository
·
DevOps/DevOps
개요 Redis는 다양한 언어와 함께 사용할 수 있다. 이번 포스팅에서는 spring boot 프로젝트에서 사용하는 Redis에 대해 알아보도록 한다. 현재 개발 운영 방식에 알맞은 방법으로 Redis를 도입할 수 있도록 각각의 라이브러리와 방식을 공부하는 것이 목적이다. 전체 코드는 깃허브에서 확인 가능하다. Lettuce와 Jedis 스프링 프로젝트에서 사용하는 레디스는 두 가지 종류가 있다. Lettuce Lettuce는 Netty 기반 라이브러리로 Asynchronous & Non-blocking으로 구현되어 있다. Netty란? 네트워크 애플리케이션 개발을 위한 오픈소스 자바 프레임워크로, 비동기 이벤트 기반의 네트워크 애플리케이션을 쉽게 개발할 수 있도록 관련 도구와 라이브러리를 제공한다. 자..
[Redis] Redis 2편. 기본 자료형
·
DevOps/DevOps
개요 인프런 실전! Redis 활용 강의를 듣고 정리한 포스팅이다. redis의 자료형에 대해 알아보고 익숙해지기 위해 예시 코드를 작성해보도록 한다. Redis 자료형 특징 데이터 타입에 따라 명령어가 다르다. 대소문자 구별을 하지 않기 때문에 명령어를 대문자/소문자 구분없이 작성 가능하다. Strings 문자열, 숫자, serialized object(JSON) 등 여러 자료형을 저장하는 Strings Type이다. 레디스는 int, Integer 등 별도의 숫자 관련 자료형 없이 모두 strings로 저장한다. strings로 저장되어도 사칙 연산이 가능하다. (Java를 가장 많이 쓰는 입장에서 이 점이 젤 신기했다.) Strings 명령어 SET lecture라는 변수에 “inflearn-red..
sebinChu
'DevOps' 카테고리의 글 목록