분류 전체보기 37

Kaniko 빌드 작업이 ECR의 캐시를 사용하지 않는다. 이유를 알아보자.

TL; DR .dockerignore 들어가며 2024-03-02 작성 안녕하세요? Jenkins에서 구동하는 Kaniko의 빌드 작업이 ECR에 업로드한 리모트 캐시를 사용하지 않는다는 사실을 발견하고 이 문제를 들여다 본 썰을 풀어보겠습니다. 언제나 그렇듯이 과정은 복잡하지만 해결 방법은 간단했습니다. 머리가 나쁘면 몸이 고생이라고, 무지함을 해결하지 않고 방치하면 결국에는 긴 고통으로 돌려받게 됩니다. 대부분은 이 내용을 아시겠지만 혹시 저처럼 몰랐던 분들이 있지 않을까 하여 이 글을 씁니다. 문제는 어쩌다 발견했나 On-premise A100 GPU들을 최대한 쥐어짜서 사용성을 극대화하기 위해 Kubernetes에 Volcano 를 이용해 Custom GPU Scheduler를 도입하는 과정 중이..

DevOps 2024.03.03

동료가 없어서 GitLab에 GPT 코드리뷰어 봇을 만든 건에 대하여

TL;DR 안녕하세요, "동료가 없어서 GitLab에 GPT 코드리뷰어 봇을 만든 건에 대하여" 시작하겠습니다. 사실 정말로 동료가 없어서 코드리뷰어 봇을 만들어야겠다고 생각한건 아니고, 코드 커밋시에 여러 보안 문제들을 자동으로 체크할 수 있는 도구를 만들어서 GitLab CI/CD에 붙여야겠다는 생각을 했습니다. 이 글은 GitLab v16.9(2024.1.21 현재)를 기준으로 작성되었습니다. LLM API 호출 최근 GPT로 대표되는 LLM들을 이용해서 여러가지 생산성이 있는 일들을 할 수 있게 되었고, 자동화시킨 코드에 대한 "피드백"은 그 중 하나일 것입니다. 어떤 형태로든, 외부 API나 자체 모델이나, GPT 모델을 호출할 수 있는 API를 갖고 있다면 코드리뷰를 해달라는 요청을 보낼 수 ..

DevOps 2024.01.23

[스터디] Tucker의 Go 언어 프로그래밍 내용정리 24~26장

24장. 고루틴과 동시성 프로그래밍 24.1 스레드란? 고루틴 : 경량 스레드, 함수나 명령을 동시에 실행할 때 사용 24.1.1 컨텍스트 스위칭 비용 컨텍스트 스위칭 비용 : CPU 코어가 여러 스레드를 전환하면서 수행할 경우 드는 비용 스레드 컨텍스트 : 스레드 전환시 현 상태를 보관하는데, 스레드의 명령 포인터 intstruction pointer, 스택 메모리등 코어 개수의 두 배 이상 스레드를 만들면 스위칭 비용이 많이 발생 GO 언어는 CPU 코어마다 OS 스레드를 하나만 할당해서 사용하기에 컨텍스트 스위칭 비용이 발생하지 않는다. 24.2 고루틴 사용 모든 프로그램은 고루틴을 최소 하나는 가지는데 이것이 메인루틴이다. 메인루틴인 고루틴은 main()함수와 함께 시작되고 종료된다. 고루틴 추가..

Study 2023.12.12

[스터디] Tucker의 Go 언어 프로그래밍 내용정리 21~23장

21장 함수 고급편 21.1 가변 인수 함수 인수 개수 가 정해져 있지 않은 함수 fmt.Println(1, 2, 3, 4, 5, 6..) // 인수가 많을 수 있다. 21.1.1 … 키워드 사용 … 키워드를 사용해서 가변 인수를 처리할 수 있다. 인수 타입 앞에 …를 붙여서 해당 타입 인수를 여러 개 받는 가변인수 라는 걸 표시하면 된다. package main import "fmt" func sum(nums ...int) int { // 가변 인수를 받는 함수 sum := 0 fmt.Printf("nums 타입 : %T\\n", nums) // nums 타입 출력 for _, v := range nums { sum += v } return sum } func main() { fmt.Println(su..

Study 2023.12.03

[스터디] Tucker의 Go 언어 프로그래밍 내용정리 18~20장

18장. 슬라이스 18.1 슬라이스 18.1.1 슬라이스 선언 일반적인 배열은 처음 정한 길이에서 늘어나지 않는다. var array [10]int 위에서 10개 보다 많이 저장하려면 더 큰 배열을 만들어서 값을 하나씩 복사해야 한다. 슬라이스의 선언 방법 초기화 하지 않으면 길이가 0인 슬라이스가 만들어지고, 슬라이스길이를 초과하면 런타임에러가 발생 var slice []int // 배열의 개술를 적지 않는다. 할당되지 않은 메모리 공간에 접근해서 프로그램이 비정상 종료되는 패닉이 발생한다. package main import "fmt" func main() { var slice []int if len(slice) == 0 { // slice 길이가 0인지 확인 fmt.Println("slice is ..

Study 2023.11.24

[스터디] Tucker의 Go 언어 프로그래밍 내용정리 14~17장

14장 포인터 14.1 포인터란? 포인터는 메모리 주소를 값으로 갖는 타입이다. int타입 변수 a가 있을 때 a는 메모리에 저장되어 있고 속성으로 메모리 주소를 갖고 있다. 변수 a의 주소가 0x0100번지라면 메모리 주솟값도 숫자값이기 때문에 다른 변수의 값으로 사용될 수 있다. 이런 메모리 주솟값을 변숫값으로 가질 수 있는 변수를 포인터 변수 라고 한다. 그림에서 int 타입 변수 a의 메모리 주소는 0x0100 번지이고, 값으로 3을 갖는다. p = &a 이렇게 포인터 변수 p에 a의 주소를 대입할 수 있다. 포인텨 변수 p의 값은 변수 a의 주소인 0x0100이 되고, 이것을 “포인터 변수 p가 변수 a를 가리킨다” 고 한다. 메모리 주소를 값으로 가져 메모리 공간을 가리키는 타입을 포인터 라고..

Study 2023.11.18

FluentBit 만으로 간단하게 Kubernetes에 올라간 서비스 logging 해보기

FluentBit 란? FluentBit (https://docs.fluentbit.io/manual/about/fluentd-and-fluent-bit) 오픈소스 로그 프로세서 도구입니다. 자체 비교표에 의하면, 같은 생태계의 Fluentd와 비교하여 고성능이고 메모리 사용량이 적다는 사실을 알 수 있습니다. Fluentd와 Fluent Bit는 모두 Aggregator나 Forwarder로 독립적으로 사용될 수 있고 상호보완할 수도 있다고 설명하고 있습니다. Log Forwarder : 로컬 이벤트를 수집하기 위해 일반적으로 모든 노드에 설치되며, 이벤트 수신시 Aggregator로 전달 Log Aggregator : Forwarder로부터 지속적으로 이벤트를 수신하는 데몬이며, 이벤트를 버퍼링하고 ..

DevOps 2023.10.21

[스터디] S3 개별 권한 제어 및 액세스 분석기 사용

이번에 CloudNeta팀의 AWS Hacking & Security Study 에 참여하게 되었다. 다른 사람들은 회사에서 AWS의 보안을 어떻게 관리하는 지 알고 싶을 때가 있는데 이 스터디를 통해서 알게 되길 바란다. 1주차의 내용은 S3 취약점 및 보안이다. S3 버킷 생성해서 액세스 정보 확인하기 테스트를 위해서 버킷을 생성하고 정보를 확인해보자. # S3 버킷 생성 NICKNAME=mokpolar aws s3 mb s3://ahss-$NICKNAME --region us-west-2 # 해당 버킷의 퍼블릭 액세스 확인 aws s3api get-public-access-block --bucket ahss-$NICKNAME 보통은 아무 생각없이 콘솔에서 스토리지의 퍼블릭 액세스 차단 설정을 했었는..

Cloud 2023.09.02

[북 리뷰] MLOps 실전 가이드

이 책이 출간되었다는 소식을 듣고 목차를 보자마자 바로 이 책은 사야겠다고 생각했다. 목차만 봤을 때의 느낌은 MLOps라는 말을 듣고 시작해보고 싶거나, 갑작스레 업무를 맡게 되었을 때, 전체적인 윤곽이 그려지지도, 어디서부터 시작할지도 모를 때 잡게될 것 같은 책일 것 같다고 예상했다. 책을 막상 받아보니 제목처럼 아주 실전적이라고 생각했다. 물론 다루는 주제들 각각이 너무 크다 보니 깊은 정보를 얻을 수는 없다. 말 그대로 이후에 각각의 주제를 더 깊이 파고들기 위한 실전적인 가이드인 것처럼 느껴진다. MLOps 가 뭘까? 라는 데 이 책에서는 이렇게 설명하고 있다. 머신러닝 모델이 실제 서비스를 통해 문제를 해결하는 단계로 자연스럽게 이동하지 못한다는 것은 업계에서 산업 표준으로 MLOps의 필요..

Book 2023.07.22

KServe ML Model monitoring 해보기 : Knative, Loki

이번 주 CloudNeta 스터디 주제는 Monitoring 이라 요즘 생각하고 있는 KServe의 모니터링과 관련된 글을 써보려고 한다. KServe는 ML Serving tool이니까, ML 시스템의 모니터링에 대한 얘기가 되어야 할 것 같다. ML system 에서의 Monitoring ML 시스템에서의 모니터링은 다른 모니터링과 뭐가 다를까에 대해서 참고할 만한 책이 있다. 최근에 읽고 있는 Reliable Machine Learning 이란 책인데, 이 책의 9장은 Monitoring and Observability이다. 거기서 이론적인 부분을 좀 참고해볼 수 있을 것 같아서 일부만 갖고 와봤다. Monitoring과 Observability란 뭘까? Monitoring은 시스템의 성능에 대한 ..

MLOps 2023.04.01
반응형