Dev/DevOps, Infra 32

Windows 11 WSL2 및 Ubuntu 22.04에서 GPU 활용 Docker 실행 환경 세팅

찾아본 대부분의 자료와 공식 문서가 영어로 되어있었기도 했고, 스위스 엔지니어에게 해당 방법을 알려줘야 했기 때문에 정리해 본 것이라 중간 중간 영어로 적힌 부분이 있다. Environment Ubuntu 22-04 혹은 Window WSL(Windows Subsystems for Linux) wsl 설치 방법 $ wsl --list --online $ wsl --install -d Ubuntu-22.04 Prerequisite Check Hardware 아래의 모든 작업을 진행하기 전에 정말 기본적이지만 GPU 하드웨어가 있는지, 또한 사용가능한 형태로 설치되어있는지 확인해야 한다. 시스템에 어떤 그래픽 카드가 설치되어있는지 확인하려면 다음과 같은 명령어를 사용한다. $ sudo lshw -C disp..

Dev/DevOps, Infra 2023.10.26

[MSA, Logging] Nodejs 애플리케이션에서 request ID를 correlation ID로 사용하는 법

Background MSA에 대한 로깅과 모니터링은 큰 고민거리이다. 서로 다른 개별 마이크로서비스에서 발생하는 로그를 연결 지어 트랜잭션의 처음부터 끝까지 순서대로 추적해 내는 것은 매우 어렵다. MSA 환경에서 '의미 있는 로깅' 시스템을 구축하려면 어떻게 해야할까? 여기서 '의미 있는 로깅'이란 개발자뿐만 아니라 우리 서비스를 사용하는 관리자나, 사내 비개발직군의 다른 팀원들(가령 우리 서비스의 사용율과 에러율, 비용이 비싼 AI 분석 요청의 횟수.. 등의 데이터 분석이 필요한 사업개발팀) 모두가 쉽게 찾아볼 수 있고, 수집되고 가공시킨 로그 데이터를 이해하기 쉬운 로그를 말한다. What do you need to build a meaningful logging system in MSA? Note..

Dev/DevOps, Infra 2023.07.09

[AWS, Post-mortem] AWS SQS visibility timeout 에러와 이별한 방법 (feat. 장애 부검)

최근 사내 블로그에 글을 썼다. 여기 그 링크를 첨부한다. #7. AI 분석 장애 부검 안녕하세요. Deep Bio Backend Engineer 정현정입니다.👩‍💻 medium.com 위 글과 연관된 블로그 글: 1 [AWS, Post-mortem] EC2 리소스 과다 사용으로 인한 인스턴스 상태 확인 실패 문제와 SQS dead-letter queues 2 [Dev Culture] 내가 경험하고 배운 Project Post-mortem 문화 3 [AWS] SQS event - Lambda - Slack 알람 - PostgresQL 쿼리 실행 1) Serverless framework를 사용해서 local에서 개발하고 cli로 쉽게 배포하기(aws-nodejs-typescript사용) 4 [AWS] S..

Dev/DevOps, Infra 2023.05.13

[MSA, Monitoring] Kubernetes Monitoring with Prometheus, Grafana

관련 코드는 https://github.com/Gracechung-sw/kubernetes-practice/tree/main/k8s-monitoring 에서 확인하실 수 있습니다. 1. Kubernetes monitoring 1) node - application 의 관계: 1:1 -> 1:N node와 application의 관계가 더이상 1:1 이 아니라 node에는 많은 application이 scheduling될 수 있다. 그래서 무엇을 모니터링 해야하는지 설정할 수 있어야 하고, 모니터링 시스템이 자동으로 감지하고 metric을 수집할 수 있도록 pull-based 모니터링이 사용되고 있다. 2) push-based monitoring vs pull-based monitoring Push-bas..

Dev/DevOps, Infra 2023.03.25

[Service Mesh] Service Mesh와 Envoy 찍먹해보기..(도 전일 수도 있음)

대표적으로 https://www.envoyproxy.io/ https://hackernoon.com/service-mesh-with-envoy-101-e6b2131ee30b https://www.suse.com/c/rancher_blog/stupid-simple-service-mesh-what-when-why/ 을 통해 envoy와 service mesh를 알아본 후 정리하여 작성한 글입니다. Goal 사이트 안정성 장애 발생에 대한 대응/분석/부검 용이 Remove cloud dependency (Ex. Cloudwatch, AWS auto-scaling service) Solves monitoring and logging problems efficiently and effectively and use..

Dev/DevOps, Infra 2022.06.12

[AWS] SQS event - Lambda - Slack 알람 - PostgresQL 쿼리 실행 2) AWS Lambda에서 slack alert 보내기

SQS(dead-letter queue) event 발생 시 Lambda를 사용해서 Slack alert를 보내고 PostgresQL에 쿼리를 실행하도록 설정하는 방법을 아래 3가지 순서로 기록해보고자 한다. AWS Lambda를 Serverless framework를 사용해서 local에서 개발하고 cli로 쉽게 배포하기 AWS Lambda에서 slack alert 보내기 AWS Lambda에서 PostgresDB로 쿼리 실행하기 완성 시 전체적인 구조는 다음과 같으며 aws credential은 미리 되어있다고 가정한다. 이번에는 에 대한 내용이다. 1. slack webhook 생성 우선 slack webhook을 생성하여 해당 slack url을 얻은 뒤 환경변수를 활용한다. 1) Slack에서 ..

Dev/DevOps, Infra 2022.05.07

[AWS] SQS event - Lambda - Slack 알람 - PostgresQL 쿼리 실행 1) Serverless framework를 사용해서 local에서 개발하고 cli로 쉽게 배포하기(aws-nodejs-typescript사용)

origin SQS로 들어온 task(message)를 정상적으로 처리하지 못할 경우 그 횟수가 maxReceiveCount를 초과하게 되면 Dead-letter queue로 옮겨진다. dead-letter queue로 옮겨진 메시지에 대해서는 slack 등 개발자가 상황을 바로 알 수 있도록 alert를 보내고, 또 유저에게도 해당 task의 처리가 실패하였을 때 나타나는 데이터를 보여주는 것이 필요할 때가 있다. 그래서 SQS(dead-letter queue) event 발생시 Lambda를 사용해서 Slack alert를 보내고 PostgresQL에 쿼리를 실행하도록 설정하는 방법을 아래 3가지 순서로 기록해보고자 한다. AWS Lambda를 Serverless framework를 사용해서 loca..

Dev/DevOps, Infra 2022.05.07

[Kubernetes] 쿠버네티스 Intro. 필요성, 구성, 동작 방식

대세는 쿠버네티스 강의와 Kubernetes와 Docker로 한 번에 끝내는 컨테이너 기반 MSA를 참고하여 공부한 바를 정리하였습니다. 1. 쿠버네티스 공부를 시작하는 이유 내가 해온 일 들 중 서비스 운영에 대해 고민했던 시기들을 그려본 것이다. Docker를 이용한 서비스 배포 과정에 CI/CD와 service alert 기능을 추가한 이후에도, 여러 서버에 container를 효과적으로 모니터링하고 관리하는데 어려움이 있었다. 예를 들면, 서버 health check는 정상이지만 그 안에 container가 지속적으로 down되는 문제가 발생했을 때 이를 알아차리기란 쉽지 않다. 그리고 많은 연산에 리소스가 들어가는 서비스의 경우 리소스를 효율적으로 관리하고 분배하도록 인프라를 직접 관리하는 것도..

Dev/DevOps, Infra 2022.03.04

[Docker, AWS] Docker log를 AWS Cloudwatch에서 보기

EC2에서 docker를 실행시키는 경우 container의 log가 EC2 자체에 저장된다. 즉, container의 로그는 /var/lib/docker/containers/[contianer ID]/container-cached.log 에 모이게 되는데, 이렇게 되면 instance에 직접 들어가서 docker logs [container ID] 로 확인하거나 저 파일에 들어가서 로그를 하나하나 확인해야 한다. 그래서 효율적인 로그 관리를 위해서는 container의 log를 cloudwatch로 실시간 export 하는 과정이 필요하다. 그리고 추가적으로 Cloudwatch에는 Log groups이 있고 그 안에 Log Streams이 있고 각 stream안에 log들이 모이게 되는데 이 때 Log..

Dev/DevOps, Infra 2021.10.22

[Github, CI/CD] Github Actions self hosted runner with own GPUs

Github Actions self hosted runner with own GPUs Github Actions는 Gtihub을 기반으로 하는 CI/CD, 여러 개발 Workflow 자동화 툴이다. 그런데 사용하다 보면 Github Actions workflow를 Github-hosted runner에서만 실행시키는데 한계가 있는 경우가 있다. A GitHub-hosted runner is a virtual machine hosted by GitHub with the GitHub Actions runner application installed. 구체적으로 어떤 경우가 있을 수 있는지 'ML application을 위한 Workflow를 Github Actions로 실행하고자 할 때'를 예시로 살펴보자면..

Dev/DevOps, Infra 2021.10.10