전체 글 100

[MLOps] Kubeflow 개요 : 아키텍쳐 및 파이프라인 이해

쿠베플로우 개요 코드 배포를 자동화하는 일반적인 소프트웨어 엔지니어링과 다르게, ML 문제에서는 다른 여러 문제도 고려된다. ML project에서는 위와 같은 여러 파이프라인을 관리할 수 있어야 하는데, 추적하고 재사용이 가능하게 만들어놓은 오픈소스가 바로 Kubeflow다. 기능 1. 조합가능성 - 각각의 단계에 필요한 툴이나 라이브러리를 독립적으로 사용할 수 있다. - End-to-End 파이프라인을 형성하기 위해 함께 구성도 가능 2. 이식성 - 컨테이너 기반 설계 + CLoud native 아키텍쳐 활용 - 특정 개발환경에 종속될 필요가 없다. 3. 확장성 - Kubernetes 기반으로, 컨테이너 개수와 크기를 클러스터의 요구에 따라 동적으로 확장 가능 쿠베플로우 아키텍쳐 1. 대시보드 쿠베플..

IT_Study/Ops 2023.10.27

[MLOps] Machine Learning Pipeline에 대한 이해 (2)

ML Pipeline 단계 1. Data Ingestion / Versioning - 다음 구성 요소가 소화할 수 있는 형식으로 데이터를 처리 - 데이터 수집단계에서는 Feature Engineering을 수행하지 않음 (데이터 유효성 검사 단계 후에 수행) 데이터 엔지니어링 관점에서, 우리가 원하는 형태의 데이터셋이 어떻게 생겼는 지 그려본 다음, 원천 데이터로 어떻게 얻어낼 지(이런 데이터를 모으려면, 어떤 로그가 있어야 하는 지~)를 역으로 설계해야 편리하다. (리버스 엔지니어링) Versioning이 중요한 이유 중 하나는 Reproducibility 때문이다. Versioning 시, 요즘 회사들은 거의 Cloud 기반이니, 보통 Amazon S3나 GCS, Blobs 같은 Object Stor..

IT_Study/Ops 2023.10.26

[MLOps] Machine Learning Pipeline에 대한 이해 (1)

머신러닝 파이프라인의 필요성 기본적으로 파이프라인을 통해 얻는 이점은 생산성 향상, 예측 가능한 품질 획득, 장애 대응능력 향상이다. 1. 생산성 향상 - 일반적으로 한 두개의 모델을 직접 서빙하는 건 가능하나, 동시의 수백개의 모델을 컨트롤할 수 없음 2. 예측 가능한 품질 획득 - 일반적으로 모델 서빙 후 퍼포먼스에 대한 측정을 잘 안한다 / 배포하고 끝냄 - 모델은 서빙 후 지속적으로 품질이 떨어진다. -> 품질 관리가 필요 - 이것도 시스템화 시켜야 컨트롤 가능 3. 장애 대능 능력 향상 - ML 프로젝트는 장애가 일어나는 지조차 알기 어렵다 - 시스템의 스케일링이 커질수록 파이프라인이 필요 - PoC(Proof of Concept) Level에서 Production Level로 끌어올리는 과정이..

IT_Study/Ops 2023.10.26

[특화 PJT] 게임 통신 방식에 따른 서버 분류 및 WAN 환경에서 유저 연결 시 문제점

게임 통신 방식에 따른 서버 분류 1. 동기적 게임 서버 플레이어끼리 실시간 통신이 반드시 필요한 경우 사용 a. TCP& UDP를 이용한 소켓 통신 / RPC 사용 - 실시간 동기화 방법 2가지 - 단, 재화 & 상점 아이템 구매 등 단순한 저장 데이터의 경우 웹 서버 / WAS에서 분산 처리 b. Stateful한 서버 구성으로 Client와 Server는 1:1 연결이 존재 - Client 안의 캐릭터 움직임 및 체력, 공격 등 동적 데이터 관리 - 플레이어와 서버가 양방향 통신이 이루어짐 - Client가 서버에 행동을 요청하고 그 결과를 처리한 뒤, 접속되어 있는 모든 Client에게 데이터를 보내준다 => 데이터 동기화 (Broadcast) - 모든 Client가 하나의 서버에 연결되어 있으므..

[OS Intensive Study] Thread 생성 과정을 뜯어보자

개발자 커뮤니티에서 Thread Pool 관련해서 Thread Throttling이란 단어가 언급되었는데, 이에 관련된 내용을 정리해보기로 했다. Thread Pool Thread Pool이란, 말 그대로 Thread를 모아놓은 것을 의미한다. 여러 생성된 Thread들이 대기하고 있다가, 할 일이 들어오면 대기하고 있던 Thread들 중 하나가 이를 받아서 실행하는 개념인데, 그렇다면 Thread Pool이 왜 필요할까? 일단 Thread Pool의 장점은 Thread를 생성하기 위해 메모리 상의 빈 공간을 찾는 작업, 쓰레드 생성 등의 부가적인 시간을 줄일 수 있다고 한다. 위 내용을 정확히 이해하기 위해 코드를 뜯어볼 예정이다. 멀티쓰레딩 강의에서, C++로 쓰레드 생성 시 pthread_creat..

[Unreal Engine] 멀티플레이에서 서버의 역할, 언리얼 서버 관련 용어 정리

게임 서버에 관련해 어느 정도 개념 정립이 돼서 블로그에 정리를 해본다. 간단 단어 정리 1. Host : - 네트워크 상에서의 컴퓨터 또는 장치를 가리키지만, 해당 글에서는 네트워크에서 중요한 역할을 하는 개별 컴퓨터나 장치를 일컫는다. 2. Hosting : - 컴퓨터 네트워크에서, 특정 기능 또는 서비스를 다른 사용자에게 제공하고 관리하는 것 3. Client-Server model : - 네트워크 아키텍처에서 클라이언트가 서비스나 자원을 요청하고, 서버가 이 요청을 처리하고 응답하는 상호작용 모델을 의미. - 즉, Client의 역할과 Server의 역할이 분리되어 있음 서버 방식 in 멀티플레이어 게임 멀티플레이어 게임에서, 클라이언트와 서버의 구성에 따라 크게 3가지 방식으로 나뉜다. 1. P..

IT_Study/Network 2023.09.04

[특화 PJT] Data Flow 설계기법

왜 Data flow를 알아야 하는가? 1. 더 좋은 개발자가 되기 위해 2. 보다 정확한 개발을 하기 위해 3. 회의시간의 내용을 빠르게 이해할 수 있기 위해 4. 개발기간을 단축하기 위해 ... 3 Tier architecture 1. Presentation Tier : 사용자 인터페이스(UI)를 담당하는 부분 - 사용자가 시스템과 상호작용하는 화면, 폼, 버튼, 그래픽 요소 등이 이 계층에 속함 - 주로 사용자가 정보를 입력하고 시스템으로부터 결과를 확인하는 역할을 수행 - 웹 응용 프로그램의 경우 웹 브라우저에서 볼 수 있는 부분이 프레젠테이션 계층에 해당 # Security : Presentation과 Application 사이 보안을 담당하는 부분, Certbot 등이 이에 해당 2. Appl..

[공통 PJT] Ubuntu에서 Jenkins와 GitLab 연동해서 CI 해보기 (with Docker)

Jenkins 관련해서 A to Z로 내가 원하는 내용이 담겨있는 부분이 없어서, 내가 직접 A to Z로 만들어보았다 진행 순서 1. Docker로 Jenkins Container 실행 2. Jenkins GitLab Setting (A to Z) 필요한 부분만 작성했고, 해당 코드 작성한 이유 등 디테일은 본인이 찾아봐야 한다. 개발 환경은 AWS EC2 (20.04 Ubuntu LTS) 이다. Jenkins 설치 및 설정 1. Docker 활용 Jenkins 실행 $ sudo docker run -d --name jenkins --restart=on-failure \ -p 8083:8080 \ -v /var/jenkins_home:/var/jenkins_home \ -v /var/run/docker..

IT_Study/Ops 2023.08.20

[Internet of Things] : 스마트 홈 IoT 연동 표준 - 매터

스마트 홈 IoT 서비스 이용 과정 제품 구매 => 제품 설치 => 환경 설정 (앱 설치) => IoT 디바이스 / 서비스 간 연동 그러나, 보안을 이유로 기업 각자가 지원하는 디바이스와 앱 이외에는 서로 연동되지 않음 매터(Matter)란? 여러 플랫폼에서 공통으로 활용할 수 있는 통합 프로토콜 하나의 디바이스로 여러 플랫폼에 연결하여 이용 가능 2019년 Zigbee Alliance에 의해 Project CHIP 시작 2021년 Zigbee Alliance는 CSA로, Project CHIP은 Matter로 명칭 변경 매터의 특징 1. IPv6 기반 홈 IoT 통신 표준 - 이더넷, 와이파이, 스레드 등 지원하고 있음 2. 멀티 어드민 - 사용자는 자신이 선호하는 스마트 홈 플랫폼을 선택하여 매터 기..

DATABASE (2) : 데이터베이스 설계 프로세스, 반정규화

DB 설계의 목적 - 데이터 중심의 분석 방법 - 프로젝트, 명세서 등의 정보 요구사항에 대한 정확한 이해 - 분석자, 개발자, 사용자 간의 원활한 의사소통 수단 - 현행 시스템만이 아닌 신규 시스템 개발의 기초 제공 설계를 대충하면 디버깅 정도로 해결될수 없는 일도 발생한다. 데이터 모델링 절차 1. 설계를 위한 요구사항 분석 - 데이터베이스에 대한 사용자의 요구사항을 수집하고 분석해서, 기능명세서를 작성 2. 개념적 설계 - 작성한 요구사항 명세서에서 데이터베이스를 구성하는데 필요한 개체, 속성, 개체간의 관계를 추출하여 ERD를 생성 1. 개체(Entity)와 속성(Attribute)을 추출한다. - 대부분 명사로 추출 2. 개체 간의 관계(Relationship)를 추출gksek. - 대부분 동사..

IT_Study/Database 2023.07.19