[INFRA] 개인 프로젝트 INFRA, CI/CD 구축기 - (2) 인프라 아키텍쳐 수정
·
Infra
이전 글에서 INFRA 아키텍쳐, CI/CD 초반 설계를 완성했었습니다. 해당 설계대로 인프라, CI/CD 환경을 구성하던 중에 조금 의문이 생겼고 그 의문을 풀다보니 인프라 아키텍쳐를 수정하게 되었습니다. 그 과정을 한번 포스팅 해보겠습니다! 1. 인프라 아키텍쳐 수정 계기 이전에 인프라 환경을 다음과 같이 구성했었습니다. 해당 인프라 환경을 바탕으로, CI/CD를 다음과 같은 설계 기반으로 진행하려고 했습니다. 처음에 이렇게 단순하게 설계를 하고, 젠킨스에서 Docker Hub에 이미지를 push하는 과정까지 작업을 마무리했었습니다. 그 다음 작업을 진행할 때 한가지 의문이 들었습니다. 'EC2가 Scale-out으로 여러 대 있는데 여러 WAS EC2에 어떻게 최신화된 도커 이미지를 배포하지?' 떠..
[Docker] Docker in Docker, 도커 안에서 도커 사용하기
·
Infra/Docker
0. 들어가기 전 개인 프로젝트의 CI/CD를 구성하는 도중에, 처음 접해보는 상황이 생겼었습니다. 바로, 도커 컨테이너 내부에서 도커를 사용해야 하는 상황이었습니다. 구글링을 진행해보니 이러한 상황은 Docker in Docker라는 기술로 불리고 있었습니다. 따라서, 적용한 Docker in Docker와 트러블 슈팅을 진행한 경험을 포스팅해보겠습니다. 1. Docker in Docker 필요 상황 도커 컨테이너 내부에서 왜 도커를 실행해야 하는 상황이 발생했는지 먼저 살펴보겠습니다. 저는 CD 툴로 Jenkins를 사용하고 있습니다. 이때, Jenkins도 하나의 도커 컨테이너 내부에서 실행되고 있습니다. 이 상황에서, Jenkins의 CD 파이프라인 일부는 다음과 같았습니다. stage('push..
[INFRA] 개인 프로젝트 INFRA, CI/CD 구축기 - (1) 초기 설계
·
Infra
이전 프로젝트에서의 인프라 및 CI/CD를 구성할 때 최우선적으로 고려했던 점은 ‘과연 우리 프로젝트에 이 기술이 필요할까?’ 였습니다. 이에 따라 주어진 환경 내에서 최소한의 자원만을 사용하여 인프라 환경을 구축했었습니다. 이번에는 개인 토이 프로젝트를 진행하면서 이전에 사용하지 못했던 기술들을 사용하는 것을 목표로 이전에 사용하지 않았던 Docker, Jenkins, AWS ALB를 사용하며 인프라, CI/CD 환경을 구축해보려고 합니다. 프로젝트의 규모가 작고 거의 처음 경험하는 기술 위주로 설계한 초보 개발자의 개인 토이 프로젝트인 점을 참고해주시면 감사하겠습니다! 😃 (설계는 인프라 구축 단계에서 시행착오를 거치며 꾸준히 변경될 수 있습니다! ㅎ__ㅎ...) 1. INFRA 설계 🚀 완성한 IN..
[Docker] EC2 환경에서 Docker에 Spring Boot WAS 띄우기 with Docker Hub
·
Infra/Docker
개인 프로젝트에서 EC2 환경에서 Docker에 Spring Boot를 설치할 일이 생겼습니다. 다음에도 WAS를 띄우는 과정을 구글링해서 찾아볼 것 같아서 기록용으로 기록해보고자 합니다! 설치 과정은 도커가 설치되어 있는 EC2 Linux 환경과 Docker Hub 계정이 있는 환경으로 진행되었습니다. 전체 과정을 요약하면 다음과 같습니다. Spring Boot Dockerfile 생성 Docker Image 생성 Docker Image를 Docker Hub에 업로드 EC2에서 Docker Hub에 업로드한 Docker Image 다운로드 받아서 WAS 실행 1. Spring Boot Dockerfile 생성 Docker Image를 생성하기 위한 Dockerfile을 생성합니다. 한번 이미지를 만들고..
[Redis] EC2 환경에서 Docker에 Redis 설치 후 실행하기
·
DB/Redis
개인 프로젝트에서 EC2 환경에서 Docker에 Redis를 설치할 일이 생겼습니다.다음에도 설치 과정을 구글링해서 찾아볼 것 같아서 기록용으로 기록해보고자 합니다! 설치 과정은 도커가 설치되어 있는 EC2 Linux 환경으로 진행되었습니다.1. 도커에 Redis 설치기본적으로 도커 자체에 Redis를 설치하는 것은 간단합니다. 1-1. Docker Redis Image 다운로드$ docker pull redis 1-2. 다운로드 된 Docker Image 확인$ docker images 2. Redis 추가 설정추가 Redis 설정 부분을 설정해봅시다. 2-1. Docker Volume 설정Redis는 in-memory 기반 저장소이기 때문에 Docker Container 내에서 실행 시 해당 컨테이너..
[Spring] Spring에서 Session 저장소로 Redis 사용하기(feat. Redis Session Clustering)
·
Spring
0. 들어가기 전 이전 포스팅에서 간략하게 Redis를 살펴봤었습니다. 이전 포스팅에서는 Redis의 장점으로 인메모리 저장소의 특성으로 인한 빠른 성능을 중점적으로 소개했습니다. 이번에는 Spring을 사용한 개인 프로젝트에서 Redis Session Clustering을 사용한 과정을 포스팅해보도록 하겠습니다! https://ksh-coding.tistory.com/127 [DB] Redis란? 여러 프로젝트를 살펴보니, 인메모리 저장소로 Redis를 사용하는 것을 많이 볼 수 있었습니다. Redis가 무엇이고, 어떤 장점이 있길래 많이 사용하는 걸까요? 프로젝트에 적용하기 전에 간략하게 Re ksh-coding.tistory.com 1. Session Clustering 앞에서 Session Clu..
[DB] Redis란?
·
DB/Redis
여러 프로젝트를 살펴보니, 인메모리 저장소로 Redis를 사용하는 것을 많이 볼 수 있었습니다.Redis가 무엇이고, 어떤 장점이 있길래 많이 사용하는 걸까요?프로젝트에 적용하기 전에 간략하게 Redis를 살펴보도록 합시다.1. Redis란?Redis는 Remote Dictionary Server의 약자로, Key-Value 형태로 데이터를 저장하는 원격 서버를 의미합니다.Redis 공식 홈페이지(https://redis.io/)에서는 Redis를 다음과 같이 간략하게 소개하고 있습니다. ‘Redis는 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 오픈 소스의 인메모리 데이터 구조 저장소’ 여기서, Redis는 디스크나 SSD가 아닌 메모리에 데이터를 저장하는 인메모리 NoSQL Key..
12월을 맞이하며 쓰는 지극히 개인적인 우테코 5기 감정 회고(ps. 2023 회고)
·
우아한테크코스 5기
우테코 5기 합격 메일을 받은지가 지금으로부터 거의 1년이 다 되어간다. 그동안 참 많은 일들이 있었는데 짧게 회고를 해보려고 한다. 레벨 1, 2때는 정말 쉴틈없이 개발 공부를 했었다. 아침 7시에 일어나서 9시 전에 캠퍼스에 등원하고, 밤 10시 30분 ~ 11시까지 끊임없이 공부하고 12시에 집에 들어왔었다. 이때를 생각해보면 그냥 불도저처럼 열심히 공부했던 것 같다. 레벨 1, 2 때는 다시 돌아가도 그 이상으로 공부하진 못할 것 같다. 그래서 만족 ^__^ 레벨 3, 4때는 팀 프로젝트를 시작했다. 프로젝트 시작 전에는 여러 기술이나 방법들을 도입해보고자 혼자 찾고 노력할만큼 열정이 가득했었다. 그런데 기획 회의를 거쳐서 개발 단계에 들어가면서 많은 에너지 소모가 발생했던 것 같다. 아무래도 제..
[Spring] 스프링 동시성 처리 방법(feat. 비관적 락, 낙관적 락, 네임드 락)
·
Spring
0. 들어가기 전 이전에는 DB 단의 동시성 처리 방법인 Lock에 대해서 알아봤습니다. https://ksh-coding.tistory.com/121 [DB] DB Lock이란? (feat. Lock 종류, 블로킹, 데드락) 0. 락(Lock)이란? 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 하나의 커넥션만 변경할 수 있게 해주는 기능 동시성을 제어하기 위한 기능 저는 처음에 DB 락을 접했을 때, 락을 이 ksh-coding.tistory.com https://ksh-coding.tistory.com/124 [DB] MySQL 및 InnoDB의 DB Lock 알아보기 MySQL에서 사용되는 락은 다음과 같은 2가지 종류로 나뉩니다. MySQL 엔진의 락 스토리지 엔진(InnoDB)의 ..
[DB] MySQL 및 InnoDB의 DB Lock 알아보기
·
DB
MySQL에서 사용되는 락은 다음과 같은 2가지 종류로 나뉩니다. MySQL 엔진의 락 스토리지 엔진(InnoDB)의 락 MySQL 엔진의 락, 스토리지 엔진 중 현재 MySQL의 기본 스토리지 엔진인 InnoDB의 락을 알아보도록 하겠습니다. 0. 테스트 환경 구성 도커에서 MySQL 사용 다음과 같은 coupon 테이블, member 테이블에서 진행 1. MySQL 엔진의 락 MySQL 엔진은 MySQL 아키텍쳐에서 스토리지 엔진 위의 계층에 속하기 때문에 MySQL 엔진의 락은 모든 스토리지 엔진에 영향을 미치게 됩니다. MySQL 엔진의 락은 다음과 같은 3종류를 제공합니다. 글로벌 락 (Global Lock) 메타데이터 락 (Metadata Lock) 네임드 락 (Named Lock) 1-1. ..
BE_성하
성장하는 성하 Blog