GPU 서버 관리 자동화 시스템 알림 병목 해결기 (소비자-생산자 패턴, Redis Message Queue 알아보기)
·
경험 모음집
저는 1년간 교내 서버 관리자로 근무하면서 GPU 서버 관리 자동화 시스템의 백엔드를 개발해왔습니다. 오늘은 이때 마주했던 문제를 해결하는 방법, 그리고 생산자(Producer)-소비자(Consumer) 패턴에 대해 작성해보려고 합니다! 요구사항먼저 이해를 돕기 위해 비즈니스 요구사항을 살펴보겠습니다. GPU 서버의 각 컨테이너(정확히는 Pod)에는 만료 기한이 있습니다. 사람이 직접 수작업으로 컨테이너를 내리는 대신, 정해진 만료 기한에 따라서 컨테이너가 자동으로 정리되어야 합니다. GPU 서버 관리 자동화 시스템에는 웹 UI가 존재합니다. 각 사용자는 웹 UI에 대한 계정이 있으며, 계정 또한 만료 기한이 존재합니다. 웹 UI 계정별로 컨테이너는 여러개 생성될 수 있습니다. 앞서 말했던 것처럼 여러..
우리팀 아기를 위한 - Github 히스토리 기반 인수인계 봇 만들기 with Spring AI
·
경험 모음집
팀의 신입이 모든 히스토리를 짧은 시간 안에 다 읽고, 지식을 흡수하기란 매우 어려운 일이다. 나 역시도 신입 서버 관리자로 들어왔을 때, 파편화된 문서들을 읽는 데 시간이 오래 걸렸다. 그래서 내가 서버 관리자 업무 자동화 시스템을 개발하면서는, PR / Issue / Wiki등등을 열심히 쓰려고 노력했다. 1년이 지났고, 새로운 서버 관리자 한 명을 영입하게 되었다. 내가 졸업을 앞두게 되어 개발하던 백엔드 파트를 인수인계 해주어야 하는 상황이었다.이때 여러명의 신입 관리자들에게 구두로 정보를 전달하는 것은 쉽지 않을 것 같다.신입 관리자님과 함께 회의가 끝나고 카페에 가서 폴더 구조, 배포 방법, 주의할 점 등등을 설명해주고 있었는데, 나도 내가 짠 것이.. 반년정도, 아니 세달만 지나도 잘 기..
1년간의 대학교 GPU 서버 관리자 회고...무언가 돈을 받고 한다는 것
·
경험 모음집
회고를 공개적인 공간에 작성하지 않는데,낯부끄럽지만 1년간 학부생으로 공부하며 GPU 서버 관리자로 일한 소중한 경험에 대해 기록을 남겨보고자 한다. 나는 전공생은 아니지만, '신입 GPU 서버 관리자 모집' 공고를 보게 되었다. 우대 사항에는- 1~2학년- 석사 과정 희망이 적혀있었지만, 나는 둘 중에 어느 군데도 해당되지 않았다. 대학생 기준으로 나이도 든 (화석) 대학원은 죽어도 가기 싫은 학생이었다. 그런데 우대사항에 Spring Boot & Java가 적혀있는 것을 보았다. 그것이 어떤 의도일까, 고민을 해보았는데...혼자서는 답을 낼 수가 없어, 문의를 남기고자 했다. 마침 내가 수강하던 컴퓨터 시스템이라는 과목의 담당 교수님께서 서버실을 담당하고 계셔서, 수업에 끝난 뒤에 조용히 질문을..
AWS RDS(MySQL) Migration하기 (📦 새 계정으로 이사가요)
·
경험 모음집
오늘은 AWS RDS를 다른 계정으로 이전하는 작업을 했다. 기존에 팀에서 쓰던 동아리 홈페이지 AWS 계정의 설정을, 학교와 연결된 회사의 계정으로 옮겨야 하는 상황이라백엔드 팀원들과 역할을 나누어서 하나씩 회사 계정으로 마이그레이션을 해보기로 했다. 우선 마이그레이션이란 무엇일까? 말 그대로 '이주', '이동'을 뜻한다. 조금 더 설명을 보충하기 위해 레드햇에서 정의를 찾아왔다. IT 마이그레이션은 데이터나 소프트웨어를 한 시스템에서 다른 시스템으로 이동하는 것입니다. IT 마이그레이션은 프로젝트에 따라 데이터 마이그레이션, 애플리케이션 마이그레이션, 운영 체제 마이그레이션, 클라우드 마이그레이션 등 한 가지 이상의 이동이 진행될 수 있습니다.IT 마이그레이션의 일반적인 몇 가지 예시는 다음과 ..
쿠버네티스의 자가 치유
·
Server
쿠버네티스의 Self-Handling쿠버네티스는 운영 수준의 컨테이너 오케스트레이션 플랫폼으로, 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 모니터링, 복구할 수 있는 기능들을 제공한다. 특히 Self-handling 기능에는 livenessProbe라는 것이 있다. livenessProbe는 컨테이너를 진단해서 정상적인지 검증하고, 그렇지 않다면 restart를 한다. 이전에는 개발자가 직접 모니터링을 해서 애플리케이션 상태를 확인하는데, 쿠버네티스는 이를 자동화해준다.https://kubernetes.io/ko/ 운영 수준의 컨테이너 오케스트레이션K8s라고도 알려진 쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템입니다. 애플리케이션을 구성하는 ..
[CS] 웹 요청 전체 과정 정리하기
·
CS
학생이 노트북을 학교 캠퍼스 네트워크에 연결하고 www.google.com을 요청한다고 해보자! 과정을 1단계에서 4단계까지 정리해보자. 1단계: 인터넷 연결 - DHCP (Dynamic Host Configuration Protocol)상황노트북이 네트워크에 연결되었지만, IP주소가 없다. First-hop router(게이트웨이) 주소를 모른다. DNS 서버 주소를 모른다. 네트워크 연결을 하기 위해서는 위 세 가지 정보가 필요하다. DHCP 과정1. DHCP DiscoverApplication Layer: DHCP Discover 메시지를 생성한다. Src: 0.0.0.0:68 -> Dest: 255.255.255.255:67전송 방식: Broadcast (모든 장치에게 전송한다.) 캡슐화 ..
DHCP client-server 시나리오 (초-카와이 교수님이 강의실에서 대학원생을 찾는 건에 대하여, 브로드캐스트지만 사랑만 있으면 상관없잖아?)
·
CS
DHCP란?호스트에 IP주소를 수동으로도 할당할 수 있지만, DHCP(Dynamic Host Configuration Protocol, 동적 호스트 구성 프로토콜)이 더 많이 쓰인다. DHCP는 말그대로 호스트가 IP주소를 자동으로 얻을 수 있게 해준다. Plug-and-play protocol or zero-configuration protocol이러한 특성 때문에 플러그 앤 플레이 프로토콜 또는 제로 구성 프로토콜이라고도 한다. 예를 들어 학교에서 WIFI를 사용한다고 해보자. 나는 신공학관에서 정보문화관으로 이동하면서 새로운 IP주소가 필요할 것이다. 많은 사용자가 이동하고, 주소들이 제한된 시간에서만 필요한 경우 수동 할당보다는 DHCP가 적합하다. client-server 프로토콜DH..
Auto Scaling with NLB (Network Load Balancer)
·
Server
ALB : Application Load Balancer (OSI 7계층 기반의 부하 분산기)애플리케이션 layer : HTTP에서 URL을 기반으로 부하분산주로 웹서버에 대한 로드밸런싱URL 기반으로 분산을 처리하는 예시`www.naver.com/news`에 대한 트래픽이 많아지면 ALB가 Target group에 분산시켜준다.`www.naver.com/shopping`에 대한 트래픽이 많아지면 ALB가 Target group에 분산시켜준다.웹서버가 여러대 있다면 Round Robin(RR, 순차분배)으로 분산하는 방식을 사용한다. NLB : Network Load BalancerNLB는 Layer 3인 Network laryer에서 작동한다고 착각할 수 있지만, 여기에서는 port 번호에 대한 로..
[Spring Boot] Spring Security 권한 분리하기
·
Spring Boot
서비스를 개발하다보면 여러가지 권한을 가진 회원들이 생기는 경우가 많다.방문하는 모든 사람들이 접근할 수 있는 리소스, 그리고 회원만 접근할 수 있는 리소스가 있을 것이다.작은 프로젝트에서는 회원만 접근할 수 있는 리소스는 토큰이 필요하게끔하면 되겠지만,관리자 계정이 필요한 경우도 있다. 아주 간단하게는 리눅스처럼 관리자용 특정 `user_id`를 주어 해결할 수 있다. 하지만 권한을 나눠야하는 case가 3개 이상인 경우, `user_id`로 구분하는 방식은 유연성과 확장성이 떨어진다.따라서 내가 Spring Security로 권한을 나누고 관리하는 방법에 대해 적어보고자 한다. Spring Security를 이미 사용하고 있다면, 권한을 나누는 방법은 아주 간단하다. 1. Role enum을 만든다...
[pfsense] Alias 설정하기
·
Server
Pfsense의 Alias 기능pfsense에는 alias(별칭) 기능이 있다. alias는 firewall rules, port forwards, outbaoud NAT rules 등에 적용될 수 있다. alias를 사용하면 규칙이 더 간결해지고, 문서화되며, 관리가 더 쉬워진다. Alias 적용 case나는 firewall rules에서 backend.ai 를 설정하는 데 필요한 포트들을 열어주려고 했다. 여러가지 포트를 열어줄 경우에, 하나씩 규칙이 생성될 것이다.예를 들어 3000, 8100, 8110, 8120, 9090, 8081 5개 포트가 필요하면 규칙이 5개 생긴다.귀찮아서 범위를 지정해서 8100~9090을 한방에 열어버리면 필요없는 포트까지 열리는 문제가 발생한다.그래서 alias를 ..