도커로 레디스 띄워서 스프링 컨테이너랑 통신하기 (DevOps)
·
DevOps/Docker
들어가며먼저 redis라는 기술 스택을 refresh token의 효율적인 관리를 위해서 도입하게 되었고, 해당 경험에서 도커 컨테이너를 활용해 경량화하여 띄우는 방식을 사용했다. 여러 사람이 함께 협업해야하는 특성상 도커를 활용하면 OS 환경 구애 없이 Redis를 빠르게 띄울 수 있다. 본문Redis 기본 설정먼저 termius나 각종 툴을 사용해서 Redis 설정 파일 (기본세팅) 을 준비한다. 가장 먼저 6379 포트를 열어 주어야 하며, redis.conf의 수정이 필요했다nano ~/redis.conf# SSH 환경에서 위 명령어를 친 다음, 아래 내용을 추가 해주어야한다 bind 0.0.0.0port 6379requirepass 비밀번호appendonly yesRedis 컨테이너 실행파일을..
리버스 프록시란 무엇일까 ? (DevOps)
·
DevOps/리버스 프록시
들어가며 이번 포스팅에서는 리버스 프록시의 개념과 함께, Sopt 세미나를 진행하며 고민했던 Apache와 Nginx의 구조적 차이, 실제 Nginx의 고도화 방식 등등을 다뤄보려고 한다리버스 프록시란?리버스 프록시는 클라이언트(사용자)의 요청을 받아 실제 웹 서버(혹은 WAS)로 전달하고, 그 결과를 다시 클라이언트에게 반환하는 중개자 역할을 하는 서버다. 즉, 사용자는 리버스 프록시만 바라보고, 내부의 실제 서버 구조는 알지 못한다기본 작동 원리1. 클라이언트가 리버스 프록시에 요청을 보냄2. 리버스 프록시는 요청을 웹 서버에 전달3. 웹 서버는 요청된 데이터를 처리한 후 리버스 프록시에 응답을 보내줌 4. 리버스 프록시는 다시 웹 서버로부터 받은 응답을 클라이언트에게 전달 정리하자면 플로우는 위 내..
5분만에 Caddy로 리버스 프록시 설정하기 (DevOps)
·
DevOps/리버스 프록시
들어가며이번 포스팅에서는 AWS EC2 환경에서 Caddy를 사용해 리버스 프록시를 빠르게 설정하는 방법을 다루어보려 한다물론 Nginx나 Apache를 사용해서 리버스 프록시를 설정해주는 방법도 있지만, 좀더 설정해줄 내용이 많고, 별도의 SSL 인증서 관리도 해줘야해서 번거로울 수 있다고 생각해서 해당 내용은 추후에 다른 포스팅으로 다뤄보려고한다. 특히 그중에서도 Let's Encrypt 인증서 자동 갱신 설정이나 도메인 없이 HTTPS를 적용하는 과정에서 많은 시간을 소모했었는데, 그 경험도 공유해보겠다. 다시 돌아와서 앞서말한 Nginx나 Apache와 비교해서, 간단하고 직관적인 방법이 Caddy라고 생각하면 될거같다. 정말 간편하고 설정할 것도 별로 없어서 포스팅을 보면 충분히 따라서 가능할거..
도커 네트워크, 실습 (DevOps)
·
DevOps/Docker
들어가며이번 포스팅에서는 도커의 네트워크에 대해서 다루어보려고 한다. 평소 docker networks 는 docker-compose 파일을 docker compose up -d로 실행해줄때 mysql, mongodb, redis, kafka 등을 하나의 서버에서 한번에 실행하기 위해, 설정해줘야하는 값으로만 알고 있었던 상태였고직접 서브넷과 게이트웨이를 지정을 해본다거나 컨테이너 간 통신을 실제로 해봤던 적은 없었는데, 이번 기회에 해당 부분을 다루어보게 되었다네트워크 관련 개념도커 네트워크에 대해서 다루어보기 전에, 아래의 기본적인 네트워크 관련 개념들을 알고만 있어주면 될거같다네트워크란?여러 장치가 서로 연결되어 정보를 주고받을 수 있는 시스템이다. 우리가 컴퓨터에서 웹사이트를 열 때도, 서버에 요..
클라우드 네이티브 애플리케이션 + LEAFY 실습 (DevOps)
·
DevOps/Docker
서론클라우드 네이티브 아키텍처는 나도 생소한 개념이였는데, 간단하게 설명하면 여러 서비스를 유기적으로 연결해주는 기술인데, 프로젝트 구조를 보다 유연하고 확장 가능하게 만들어준다고 한다. 이번 포스팅에서는 클라우드 네이티브의 기본 개념부터 시작해서, Leafy라는 식물 관리 애플리케이션을 실제로 컨테이너 환경에서 구성했던 과정을 기록해봤다본론클라우드 네이티브클라우드의 형태는 크게 두가지가 있다고 나오는데, 퍼블릭 클라우드는 AWS, GCP처럼 누구나 사용 가능한 형태고 프라이빗 클라우드는 조직 내부에서만 사용하는 방식인데, 보안성도 높고 비용 최적화에도 도움이 된다고 배웠다서론에서도 간단하게 얘기했었지만, 클라우드를 사용하게 되면 가장 큰 장점은 유연성이라고 느꼈다. 그 이유는 아래와 같다 클라우드를 사..
이미지 레지스트리와 빌드 (DevOps)
·
DevOps/Docker
들어가며이번 포스팅에서는 이미지랑 컨테이너를 어떻게 공유하고, 관리하고, 생성하는 과정에 대해서 다루려고 한다. 그중에서도 이미지의 저장소인 레지스트리랑 직접 이미지를 생성하는 빌드 과정을 함께 정리해보았다본론이미지 레지스트리란?이미지 레지스트리(Registry)는 도커 이미지들을 저장하고 공유할 수 있는 중앙 저장소 역할을 한다. 대표적으로는 Docker Hub가 있으며, 기업에서는 자체적인 프라이빗 레지스트리를 운영하기도 한다고 한다. Docker Hub 에서는 docker pull, docker push 명령어를 통해 이미지를 주고받을 수 있다만약 이미지를 레지스트리에 업로드하려면 아래의 단계로 진행이 되는데,1. docker tag 명령어로 이미지에 태그를 붙이기2. docker login을 통..
Docker 이미지와 컨테이너 (DevOps)
·
DevOps/Docker
들어가며도커를 사용하면서 가장 핵심이 되는 기술은 이미지와 컨테이너라는 사실은 사용하면서 인지는 하고 있었다. 하지만 단순히 이미지로부터 컨테이너를 실행한다는 것은 알아도 실제로 이미지가 무엇을 포함하고 있는지, 컨테이너가 어떤 상태를 가지는지, 실행 시점에는 어떤 변화가 일어나는지 구체적으로 이해해야 진짜로 도커를 잘 활용할 수 있다고 강의에서는 설명했다본론이미지란 무엇일까 ?도커 이미지는 컨테이너를 생성하기 위한 정적인 파일 시스템이다. 우리가 흔히 말하는 웹 애플리케이션, API 서버 등을 실행하기 위해 필요한 모든 환경이 이미지 안에 포함되어 있다고 생각해주면 된다. 이미지란 하나의 실행 가능한 스냅샷 ? 이라고 이해하면 편할거같다. 이 이미지를 기반으로 컨테이너가 실행되며, 이미지는 변하지 않지..
가상화 기술과 컨테이너 (DevOps)
·
DevOps/Docker
서론DevOps에서 많이 사용하는 기술 중 하나가 바로 도커라고 생각한다. 나는 도커를 사용하면 서버 운영, 배포, 테스트 환경 구성 등이 훨씬 간단해진다는 정도만 알고있었고, 내부적으로 어떻게 구체적으로 작동하는지 등등에 대한 내용들에 대해서는 모르는 사람이 물어보면 솔직히 잘 모르는 정도라고 생각했다. 그래서 이번 기회에 SOPT에서 도커 스터디를 시작하게 되었는데, 해당 스터디를 진행하며 새로 알게된 내용들을 아티클로 정리해보려한다들어가며항상 프로젝트에서 도커 파일을 복붙하거나 CI/CD에서만 사용했던 도커였기에, 한 번쯤은 제대로 이해하고 넘어가야겠다는 생각이 들었다이번 포스팅에서는 가상화 기술에 대한 내용부터 시작해서, 도커의 기본 작동 구조, 그리고 실제로 도커를 설치하고 컨테이너를 실행하는,..
P-프로젝트(스왑 메모리, DevOps)
·
DevOps/스왑 메모리
서론이번 회고는 서버의 메모리 부족 문제를 해결하기 위해 Swap 메모리를 생성하고 적용한 경험에대해 작성해보려고 한다.P프로젝트를 진행하면서 Github Actions, EC2, RDS, 도커를 이용해서 CICD를 구축했었는데, 당연히 유료는 대학생 입장에서 너무 부담스러웠었기에 AWS 프리 티어를 사용했었다. t2.micro 인스턴스는 1GB RAM만 제공하는데, 여러 가지 서비스를 동시에 돌리다 보면 메모리가 부족해서 서버가 자동으로 다운되는 문제점이 있었다문제점 위 사진의 내용처럼 CPU 사용량이 100%에 가까워지게 되면서, CPU의 모든 크레딧이 소진되어 네트워크 출력이 0이 되어서 서버가 자동적으로 다운됐던 것이다. 해당 문제를 해결하기 위해 난 스왑 메모리를 설정하여 이를 해결했는데, 해당..
Weeth(무중단 배포, DevOps)
·
DevOps/Blue Green
서론Weeth얼마전에 포스팅을 했었던 가치택시라는 가천대학교 학생들 대상으로 AI 공학관 또는 기숙사까지 택시를 공유해서 탑승할 수 있는 서비스보다 더 먼저 시작되었던, 그리고 현재까지 진행하고있는 프로젝트가 있다 2024년 1학기 Leets 3기에서 진행했었던 Weeth라는 동아리 관리 서비스이다위 사진을 보면 알 수 있듯이 Weeth의 주요기능은 동아리 일정 + 캘린더, 출석+패널티, 게시판, 회비, 멤버(조회) 등 크게 5가지로 나누어져있다. 먼저 해당 5가지 주요 기능들에 대해서 간단히 설명해보겠다먼저 캘린더 기능을 통해 Leets 동아리의 일정을 한 눈에 볼 수 있고, 동아리 운영진만 관리할 수 있게 구현하였다또한 출석은 정기모임 당일에 직접 제공되는 출석 코드를 사용해 출석을 진행한다. 정기모..