DevOps

최근 AWS 기반으로 CI/CD 파이프라인이 구축되어 있던 것을 온프레미즈로 옮기고 있기도 하고, 현재 일하는 곳에서 젠킨스를 이용한 CI/CD 파이프라인을 구축해야할 일이 있었다.젠킨스에 대해서 자세하게 다뤄본 적은 없었으나, 컨테이너를 통하여 젠킨스를 띄우고 젠킨스에서 다른 컨테이너를 컨트롤 하는 상황일 때, 꽤나 잔 에러가 많이 난다고 듣기만 하고서 선뜻 다뤄보지 못했다. 이번 포스팅에서는 docker를 통해 젠킨스를 띄우는 방법에 대해서 다룰 예정이며, dood 방식으로 진행한다. 파이프라인 구성에 대한 자세한 부분은 담지 않는다. 본론DinD? DooD? DinD ( Docker in Docker )먼저 DinD는 말 그대로 Docker를 컨테이너 안에 설치하여 실행하는 방법이다. 즉, 하나의 ..
· DevOps/AWS
앞서 포스팅에서 프론트엔드 배포에 대한 설정은 끝났다. 이제 백엔드 배포와 함께 해당 프로젝트의 전반적인 CI/CD 구성을 끝낼 예정이다. 전반적인 아키텍처는 아래와 같이 구성될 예정이다. 이번에도 Github actions를 통해 IAM으로 접근하는 방법이다. 백엔드 개발자가 github actions 설정을 통해서 코드를 푸시하는 순간 바로 ECS를 통해 배포되도록 구성했다. 백엔드 배포는 프론트엔드와 같이 완전한 Serverless를 이루도록 설정해 두었다. 즉, 스케일 아웃이 설정에 따라 알아서 진행되는 아키텍처로 설계하였다. 먼저 프로젝트를 진행하기 전에 앞서 알아두어야할 것들이 몇 가지 있다. 첫 번째로는 서버리스 아키텍처를 위해 ECS의 Fargate를 사용하는데, 이 경우에는 메모리와 CP..
· DevOps/AWS
최근 피우다 프로젝트라는 공모전에 다섯 명으로 팀을 꾸려 참가하였다. 개발 경력이 가장 길었기에 PM이자 팀장 포지션으로 다른 개발자들을 서포트하는 포지션으로 프로젝트에 임하게 되었다. AWS를 통해 프론트엔드와 백엔드를 배포하는 CI/CD를 전체적으로 구성하였는데, 전체적인 아키텍처는 위와 같았다. freetier를 사용하는 수준에서 처리할 수 있었고, 수많은 AWS의 서비스를 사용함으로써 AWS 아키텍처의 기본기를 제대로 다뤄보았다고 생각했다.  이번 포스팅은 프론트엔드편과 백엔드편으로 나뉘어 배포하는 과정을 나타낸다. 해당 과정에 대해서 다시 한번 블로그에 복기함으로써 어떤 식으로 아키텍처를 구성했는지 리마인드함과 동시에 다른 개발자들도 참고할 수 있게 글을 작성한다. 이번 포스팅에서 다룰 전반적인..
저번 포스팅에서는 node-exporter를 통해서 리눅스 시스템을 모니터링하는 방법을 알아봤다. 이번에는 심층적으로 redis를 모니터링해 보자.본론먼저 소스 코드의 예제는 아래와 같다. 궁금하면 직접 docker-compose를 통해서 빠르게 실행해 볼 수 있다.Github Example : https://github.com/marsboy02/redis-exporter-monitoring GitHub - marsboy02/redis-exporter-monitoring: redis-exporter를 사용해서 모니터링하는 소스 코드의 예제입니다redis-exporter를 사용해서 모니터링하는 소스 코드의 예제입니다. Contribute to marsboy02/redis-exporter-monitoring..
이전에는 프로메테우스에 대해서 살펴보았다. 이번에는 node-exporter를 사용해서 리눅스 기반 운영체제를 모니터링 대시보드를 구축하는 방법에 대해서 살펴볼 것이다. 위 사진에 따라 exporter -> prometheus -> grafana의 순서대로 데이터가 흘러가는 구조를 설계할 예정이다. docker-compose 환경을 사용해서 대시보드를 띄울 것이다. 일반적으로 쿠버네티스를 사용하는 환경이라면 좀 더 다양한 exporter를 사용할 수 있겠지만, 이번 포스팅에서는 node-exporter를 이용해서 본인의 컴퓨터를 모니터링하는 대시보드를 소개하고자 한다. 더 나아가서 node-exporter이기 때문에, 다른 노드들을 추가할 수 있는 방법까지 다뤄보고자 한다. 본론먼저 전체 소스 코드의 링..
서버 개발자로서 꽤나 긴 시간동안 코딩을 하면서 지내고 있을 무렵, CPU 및 GPU 등 다양한 데이터를 수집하는 아키텍처를 구현해야할 일이 생겼다. slurm이라는 리눅스 노드들을 클러스터링하는 툴을 쓰고 있는 상황이었고, 어떻게 모니터링 할 수 있을 지 고민하기 시작했다. HPC managing하는 과정에서 결국 시계열 데이터를 수집하는 방법을 쓰기로 했고 그러한 과정에서 프로메테우스를 열심히 공부하기 시작했다. 마스터 노드가 셋, 워커 노드가 백 개에 달하는 시스템에서 CPU 및 GPU를 모니터링하는 작업을 수행하는 아키텍처를 구현하고 있을 때, 가장 먼저 떠오른 것은 뭔가 queue를 두고 node에서 데이터들을 쏘아보내는 곳이 있어야 하지 않을까? 하는 고민이었다. 메시지 큐를 써야 하나 생각하..
학교에서 HPC(High Performance Computer)를 관리하는 일을 하면서, 여러 난관에 봉착하게 되었다. 가장 신경 쓰였던 점은 사용자들에게 리눅스 기반의 접근을 제공하는데, 모든 사용자들을 커버할 수 없다는 점이다. 예를 들어 pytorch나 tensorflow 기반 사용자들을 고려하여 관련 모듈은 내부적으로 설치가 끝난 상황이지만, 다른 프로그램을 돌리는 사람이 몇몇 있다! 그러한 케이스의 사용자들을 커버하기 위해서 추가한 것은 바로 이 enroot라는 명령어이다. 이는 NVIDA에서 만든 툴로써 권한이 없는 상황에서도 docker image를 기반으로 컨테이너 혹은 OS를 만드는 데, 도움을 주는 sandbox 툴이다. 무엇보다 이름 그대로 enroot 즉, root를 만들어 준다는 ..
앞의 포스팅을 통해 라즈베리파이의 운영체제 설치 및 쿠버네티스 클러스터 환경 세팅이 끝났다. 이제 배포 지점이 될 클러스터의 세팅을 끝내고 본격적으로 CI/CD를 구현할 차례이다. 이번 포스팅에서는 깃허브에서 제공하는 Github Actions를 쓸 예정이다. 중간에 도커라이징하는 부분이 들어가는데, Dockerfile을 작성하는 방법에 대해서는 이번 포스팅에서 다루지 않는다. 관련하여 포스팅을 작성한 부분을 참고 링크로 달아두기만 하겠다. 참고 : https://marsboy.tistory.com/5 본론CI/CD란?CI/CD (Continuous Intergration/Continuous Delivery)는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법을 ..
marsboy
'DevOps' 카테고리의 글 목록 (3 Page)