Welcome! 🙋‍♂️ View more

Engineering 💻 39

복잡한 네트워크를 간단하게! Kubernetes Service를 알아보자 (ClusterIP, NodePort, LoadBalancer)

개인적으로 Kubernetes 네트워크가 복잡하다고 생각합니다.그도 어쩔 수 없는 게 클러스터 내부에 수 많은 애플리케이션들을 연결시키기 위해서는 그럴 수 밖에 없었을 것이라~ 생각합니다.그래도 나름 간단하게 하기 위한 노력도 보이니 우리 함께 최대한 이해해봅시다! Kubernetes Service 왜 필요해? 🤔먼저 우리가 생각해봐야할 게 있습니다.왜 이게 필요할까요? Pod의 성질이는 Pod의 성질에 관련이 있습니다.예를 들어 Deployment를 통해서 애플리케이션 배포를 관리하고 있는데, Pod가 모종의 이유로 죽게되고 다시 살아났다면 이 전 Pod가 사용했던 IP와 새로 생성된 Pod의 IP는 다르게 생성됩니다.그래서 Pod IP를 직접 사용하는 것은 위험한 방법이라고 할 수 있습니다.이를 해..

MLOps Engineer와 함께 쿠버네티스(Kubernetes) 구조 살펴보기

Kubernetes 구조를 간단하게 살펴보려고합니다.제가 아는 선에서 최대한 쉽게 글을 써볼게요~ Kubernetes 구조먼저 Kubernetes 공식 페이지에 소개된 구성도부터 살펴봅시다.뭐가... 많아보이죠? 그런데 Kubernetes의 목적을 이루기 위한 최소한의 요소들이라고 생각해요. Control Plan클러스터를 전체적으로 관리하기 위한 요소들이 모여있습니다. 중앙 관제탑이라고 보시면 됩니다. 여기서는 클러스터 내 노드와 애플리케이션들을 관리하기 위한 컴포넌트들이 유기적으로 동작합니다. API Server동작을 위해서는 Kubernetes에 호출이 필요하겠죠? 이러한 동작을 관리하는 컴포넌트입니다.외부 호출 뿐만 아니라, Kubernetes는 모든 호출들은 api로 관리합니다. 예를 들어 Po..

현직 MLOps Engineer의 쿠버네티스(Kubernetes) 간단한 고찰

현재 MLOps Engineer로 2년간 업무를 진행하고 있습니다.업무를 위해서 무식하게 부딪혀서 Kubernetes에 꽤나 능숙해졌는데..매일 부딪히는 이 친구를 글로써 간단히 정리해보고 싶어 글을 씁니다. Kubernetes란쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 지원 그리고 도구들은 광범위하게 제공된다. (쿠버네티스 공식 페이지)간단하게 말해서 쿠버네티스는 컨테이너를 좀 더 잘 관리하게 위해서 사용되는 프레임워크입니다.어플리케이션 배포 관점에서 봤을 때, 자동화된 컨테이너 조정 기능을 제공하기 때문에, 시스템의 안..

[MLOps] Windows 환경에서 kubeflow 설치하기

최근 부서를 옮기게 되면서 MLOps 업무를 시작하게 되었습니다. 현재 회사에서 중점적으로 사용하고 있는 툴이 Kubeflow인데, 이 툴에 대해서 심층적으로 탐구하고자 개인적으로 설치를 진행하게 되었습니다. 근데... 이게 생각보다 쉽지가 않았습니다.... 저같은 삽질을 하지 마시라고 글을 작성합니다.... 시작! 🤸‍♂️ 우선 어떻게 설치를 하는지는 kubeflow 공식 페이지를 통해서 확인하는 것이 가장 낫습니다. (여기저기 참고하면서 진행했!는데 안 되는 것이 너무 많더라... ) 공식 페이지는 아래를 참고하세요. 가장 최신 버전도 알아서 업데이트되니 여기서 확인하는 것이 가장 좋습니다. https://www.kubeflow.org/docs/started/installing-kubeflow/ In..

[Algorithm] 알고리즘을 위한 Scala 기본 문법

Scala란 함수형 객체지향 프로그래밍 언어로써 Spark를 사용할 때 빠른 성능을 이용할 수 있음으로 데이터 엔지니어링 역량에 필요한 언어입니다. 필자는 Scala언어와 친해지기 위해서 Scala 언어를 활용하여 많은 알고리즘 문제를 풀어보았습니다. https://github.com/DeepFlame-JR/Algorithm_Solving GitHub - DeepFlame-JR/Algorithm_Solving: 알고리즘 문제 풀이 알고리즘 문제 풀이 . Contribute to DeepFlame-JR/Algorithm_Solving development by creating an account on GitHub. github.com 아래에 알고리즘에 필요한 Scala 기본 문법에 대해서 정리해보겠습니다...

[Leetcode/Python] 96. Unique Binary Search Trees

https://leetcode.com/problems/unique-binary-search-trees/ Unique Binary Search Trees - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 🤔 문제. n 개의 노드가 주어졌을 때, BST를 구성할 수 있는 경우의 수를 구하는 문제이다. 🤗 풀이. 처음에는 BST를 모두 구현을 해야하나...? 라는 생각이 들었다. (그러나 leetcode 특성상 그런 무식한 문제는 잘 없다.) 하지만 이내 이 문제는 ..

[Airflow] 2.3.0 릴리즈 주요 변화 사항을 간단하게 알아보자

Airflow가 2022년 4월 30일 버전 2.3.0을 릴리즈했습니다. 2.0.0 버전 업데이트 이후 가장 큰 변화라고 하는데, 주요 변화 사항을 간단하게 알아보도록 하겠습니다! 🔥 1. Tree뷰의 변화 가장 크게 눈에 띄는 변화입니다. 기존에는 수행별로 Task의 상태만 확인할 수 있었고, 중간에 구별선이 없어서 해당 상태(네모)가 어느 Task의 상태인지 구별하기가 어려웠습니다. 하지만 이것이 Grid View로 변경되면서 어느 Task가 어떤 상태인지 명확하게 확인할 수 있게 되었습니다. 또한 수행 시간이 제공됨으로 실행이 너무 오래 걸리거나, 너무 빨리 끝나는 상황에 대한 이상현상을 좀 더 빠르게 확인할 수 있게 되었습니다! 추가적으로 저 네모를 클릭하여 확인할 수 있는 상세 화면이 기존에는 ..

[HIVE] 하이브-Python 연동 (feat. sqlalchemy)

프로젝트를 진행하면서 Python을 통해 Hive를 컨트롤하는 니즈가 발생했다. sqlalchemy를 활용하여, create select insert를 구현했다. sqlalchemy 란? Python에서 사용가능한 ORM(Object-relational maping)이다. 즉, 데이터베이스의 데이터를 Object필드와 매핑해준다는 것이다. 사실 DB의 스키마와 Object는 서로 기존부터 호환가능성을 두고 만들어진 것이 아니기에 불일치가 발생하는데,, ORM은 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 이러한 불일치를 해결한다. 이를 통해서 쿼리를 실행할 수도 있고, Python의 Dataframe과 데이터베이스간을 연결할 수 있다. Hive-Python 연동 1. select from sq..

[Airflow] Docker를 활용한 Airflow 구축

필자는 개인 프로젝트를 진행하며, Airflow를 통한 워크플로우 자동화를 구축했다. https://github.com/DeepFlame-JR/Stock_and_Forum GitHub - DeepFlame-JR/Stock_and_Forum: 주식 가격과 네이버 종목토론방의 내용을 시간별로 수집주식 가격과 네이버 종목토론방의 내용을 시간별로 수집. Contribute to DeepFlame-JR/Stock_and_Forum development by creating an account on GitHub.github.com 어느 날, 모든 작업을 수행한 Task가 계속 Running 상태로 남아있었다.구글링을 해보니, 한 작업에서 많은 리소스를 사용하게 되면 위와 같이 되는 버그가 있는 것을 확인했다.한 T..

[Docker] Docker-Compose에서 같은 이미지로 여러 컨테이너 생성하기

🤔 문제 상황 # docker-compose.yaml version: '2' services: app01: image: app app02: image: app app03: image: app app04: image: app app05: image: app 위와 같이 같은 이미지에 대해서 다중의 컨테이너를 생성해야할 때, 위와 같은 비효율적인 파일이 생성된다. 만약 이미지별로 많은 설정들이 있다면 더욱더 복잡해질 것이다. 😀 해결 docker-compose up -d --scale app=5 docker-compose 파일을 빌드할 때 설정값을 수정하면 간단히 해결할 수 있다! 필자의 경우, 같은 airflow-worker 이미지에서 복수의 컨테이너를 생성해야해서 사용하게 되었다. 출처 https://st..

반응형