[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] 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 ..
[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..
[Redis] Redis 1편. 개념과 특징, 설치 및 간단한 사용법
·
DevOps/DevOps
개요 인프런 실전! Redis 활용 강의를 듣고 정리한 포스팅이다. Redis의 개념과 특징, 설치, 간단한 사용법에 대해 정리한다. 해당 강의는 특정 프로그래밍 언어에 종속되는 것이 아니기에, spring boot에 redis를 사용하는 것은 후속편에서 포스팅할 예정이다. Redis 알아보기 Remote Dictionary Server의 약자로, 다수의 서버가 공유하는 해시 테이블이다. Remote: Redis 서버는 각각의 서버 안에 로컬하게 존재하는 것이 아니라, 개별적인 원격상 존재해서 다수의 서버가 공통으로 사용할 수 있다. Dictionary: key-value 쌍으로, 상수의 시간 복잡도로 사용이 가능하다. Redis 특징 표준 C로 작성된 오픈소스 인메모리 데이터 저장소이다. 백업을 제외한..
[Docker] Docker와 Docker Hub로 CI/CD 구축하기
·
DevOps/Docker
개요 로컬 환경의 소스 코드를 도커 이미지로 만들어 도커 허브로 푸쉬하고, Cloud Run을 통해 배포해보자!이 포스팅에서는 Cloud Run 전 단계의 Docker 설정을 해볼 것이다.포스팅에 앞서 로컬 환경에 다음 세팅이 모두 완료되었음을 가정하고, 이와 관련한 설명은 생략한다.Docker Local SettingDocker Installation on VM InstanceDocker Hub SettingGCP VM instance SettingBitbucket Repository, branch SettingSource Tree - Bitbucket - IntelliJ 연동1. Docker Image 생성애플리케이션 코드가 담긴 도커 이미지를 생성해준다. 왜 생성할까?도커 이미지를 원격 저장소인 도..
[Docker] MariaDB 도커 이미지와 PyMySQL로 쿼리 작성하기
·
DevOps/Docker
개요지금까지 Docker image mariadb, DBeaver mariadb를 사용하여 database를 다루는 환경을 세팅하고, 쿼리문을 작성해보았다. RDBMS 마지막 시간에서는 python으로 mysql을 다루는데, 이러한 방법이 있는줄 몰랐고 생소한 내용이어서 기록해두기로 하였다.   환경 세팅우선 Docker 컨테이너 접속하여 가상환경 전원을 켜준다.개발 환경은 docker container와 visual studio code를 활용하였다. 사용할 도커 컨테이너를 터미널에서 작동시키고, vsc를 통해 접속하면 된다.위 화면은 아직 가상환경 접속 전 상태이므로 오른쪽에 로컬에서 사용했던 코드가 보인다가상환경에 접속하기 위해 원하는 컨테이너에 오른쪽 마우스를 클릭한 뒤, Attach Visual..
[AWS] Serverless에 대해서 & AWS LAMBDA
·
DevOps/AWS
Serverlessserverless 웹 사이트는 서버가 없는 게 아니다. 웹 동작 방식의 기본이 client server의 handshake이므로 서버가 없다는 건 말이 안된다. 서버리스라는 건, 백엔드 개발자가 서버에 트래픽이 얼마나 잡히는지 모니터링하거나 서버의 개수, 사양 등등을 일일이 고려할 필요없이 aws와 같은 클라우드 서비스에서 제공하는 서버(서비스)를 이용하는 것이다. 이를 이용하면 백엔드 개발자는서버 프로비저닝/관리 없이 코드를 실행할 수 있다.클라이언트(웹 서비스 이용자)의 사용량에 따라서 지속적으로 서버의 규모를 조정할 수 있다.높은 가용성과 자동으로 복구되는 편리함이 있다. 클라우드를 이용하여 REST API를 만들고 운영하는 방법 3가지1. laaS(EC2, VM Instanc..
[Docker] 도커란, 가상화(Virtualizaion)와 컨테이너
·
DevOps/Docker
가상화(Virtualization)와 컨테이너가상화란 컴퓨터 자원을 가상 환경으로 분리하여 프로그램들이 상호 충돌없이 실행 가능하도록 하는 아키텍처 기술이다.  가상화의 종류OS 수준 가상화 - (docker)하나의 OS 커널을 여러 개의 공간으로 격리하여 각각의 컨테이너가 마치 독립된 것처럼 사용하는 가상화이다. 따라서 OS를 새로 설치하지 않고 host OS의 커널을 공유한다. 이러한 방식으로 실행 속도가 빠르고 성능 상의 손실이 적다. 사용자에게는 가상머신처럼 보인다.개발 환경 가상화anaconda, venv 등 특정 폴더를 가상환경으로 만들어서 라이브러리나 소스코드를 관리하는 방식이다.머신 가상화다수의 OS를 동시에 실행하는 플랫폼을 말한다. 하이퍼바이저에 OS를 설치하여 운영하는 구조이며, 여러..
sebinChu
'DevOps' 태그의 글 목록