본문 바로가기

블로그

[K8s] 쿠버네티스 알아보기 쿠버네티스는 사람이 관리하는 것을 자동화해주고, 다양한 업체의 노하우가 모여있는 시스템이다. 쿠버네티스 아키텍처 Desired State : 상태 체크(Observe) -> 차이점 발견(Diff) -> 조치(Act) 쿠버네티스는 시스템 내부적으로, 상태를 체크하고 차이점을 발견한다. 예를 들어, 컨테이너가 1개 떠있어야 하는 상황이라면, 실제로 1개가 정상적으로 떠 있는게 맞는지 체크를 한다. 만약에 차이점을 발견하면(Diff), 이를 조치(Act)하는 Loop를 지속적으로 수행한다. 쿠버네티스에서는 이러한 Desired State를 유지하기 위해서 다양한 구성요소가 있다. 크게 1) 마스터와 2) 노드가 있으며, 세부 요소에는 아래와 같은 구성요소가 존재한다. 마스터: Scheduler, Control.. 더보기
[K8s] 왜 쿠버네티스일까? 쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼 1. 쿠버네티스의 인기Open Source로, 커뮤니티가 발달되어 있으며, 카카오나 라인과 같은 국내 대기업에서도 쿠버네티스를 많이 활용하고 있음 2. 무한한 확장성Kubeflow, TEKTON 등 쿠버네티스가  하나의 플랫폼이 되고, 그 위에서 머신러닝, CI/CD 등이 동작특히, 머신러닝 서비스를 배포하고 관리하는 kubeflow를 이해하려면 쿠버네틱스 필수임. 아니면 돈주고, AWS 세이지 메이커 활용 3. 사실상 표준쿠버네티스이 표준이며, 그 위에 본인들만의 장점을 커스터마이징 하는 소프트웨어가 많아지고 있음또한, 중요한 것은 아마존(EKS), 에저, 구글이 쿠버네티스를 매니지드 서비스를 제공하고 있음 But, .. 더보기
[k8s] 컨테이너 오케스트레이션 등장과 개념 컨테이너 오케스트레이션의 등장은 서버의 상태를 관리하기 위한 노력이다.여기서 서버(Server)는 서비스를 제공하는 컴퓨터나, 소프트웨어이다. 만약에, 본인의 컴퓨터 환경이 바뀌거나, OS가 변경이 되면  아무리 문서화를 잘 하여도 서버를 관리하는 것이 어렵다.예를 들어서, 기존 설치 프로그램과 충돌이 난다던가, 하나의 서버에서 다른 프로그램 버전을 이용해야 한다면? 매우 큰 문제가 발생할 수 있다.  따라서, 예전에는 CHEF, Puppt과 같은 관리 도구로, 서버의 상태를 확인하고 설치되지 않은 프로그램 혹은 설정이 있으면 서버에 설치를 도와주는 도구가 존재하였다.   또 초기의 해결 방법은 가상 머신(Virtual Machine, VM)이다. 가상 머신 지금도 여전히 OS에 리눅스나 다른 운영체제를.. 더보기
[Git] 3 way merge 아래와 같은 케이스를 생각해보자. 동일한 소스코드(Base)에서 나(Me)와 다른 사람(Ohter)이 소스 코드를 아래와 같이 수정하였다. MeBaseOther2 way merge3 waymerge1AA내용 삭제Conflit내용 삭제2BBBBB31C2ConflitConflit4내용 삭제DDConflit내용 삭제 위 테이블을 하나로 병합하는 방식은 2 way 그리고 3 way merge 방식이 있다.2 way merge는 Base를 보지 않고 2개의 차이점을 비교해서 병합하는 것이며, 3 way merge는 Base를 참고하여 달라지는 내용을 병합하는 것이다.  결과를 보면, 2 way merge는 Me와 Other이 다르면, Merge를 수행할 때 Conflit를 도출하게 된다. (같은 라인에 다른 내용.. 더보기
[Git] git stage area + log + diff + reset 왜 commit 전 add를 해야 하는 것인가?프로젝트를 하다보면 여러 소스코드를 수정하게 된다. 이때 자연스럽게 commit하는 시기를 놓칠 수 있으며, 수정되는 version이 매우 커질 수 있다. 이때 git은 add라는 과정을 통해서 내가 해당 version에서 수정 반영하고 싶은 파일만을 반영할 수 있다.  아래 내용을 담고 있는 f1, f2라는 파일이 있다고 가정하자.  git status를 통해, 어떠한 변화가 있는지 확인해보자. f1과 f2가 모두 modified (빨간색)으로 표시되어 있다.  새로운 version으로 만들고 싶은, f1.txt만 add로 추가해보고, status 확인 Add한 파일에는 Changes to be comitted: 에 초록색으로 표시되고, add를 하지 않은.. 더보기
[Git] init - add - commit - log - Git은 버전 관리 시스템 (Version Control System) 중 하나의 제품임예전에, Report_final_final_final.xlsx 등 파일에 이름을 계속 저장하면서 최종본을 만들어 왔다면, 파일의 이름을 언제나 Report.xlsx로 유지하면서, 파일의 내용에 대한 변경 사항은 컴퓨터가 관리가 하는 것 - 이러한 파일의 변경사항 트래킹 이외에도  Backup, Recovery, Collaboration에 대한 방식을 제공소스 코드를 관리하여 Backup 하는 것, 이전 버전을 손 쉽게 복원하는 Recovery, 그리고 다른 사람과 같은 소스코드를 바탕으로 협업을 하는 방식을 제시함 - 본질적인 요소가 존재하며(변경사항을 관리), 혁신적인 요소(기존의 CVS, SVN을 뛰어넘을 수 .. 더보기
데이터 분석가의 일 Data Analyst(DA)로 약 1년간 일하면서 느낀 데이터 분석가의 주요 업무를 정리해보았다. 회사에서 정의하고 있는 분석가의 역할에 따라서 달라질 수 있는 내용이다. 따라서 지극적으로 개인적인 의견임을 밝힌다. 모든 업무가 똑같겠지만, 비즈니스 임팩트를 내지 못하는 분석가의 업무는 지루하며 의미가 없다고 생각한다. 분석가는 모든 업무를 비즈니스 목표와 일치시켜야 한다. 지금 회사에서는 DA 업무보다는 ML 엔지니어(ML Engineer)의 역할을 수행하고 있는데, 비즈니스 난제 해결을 위해 ML/AI 기술을 활용하고, 비즈니스 목표를 달성하기 위한 프로덕션 레벨의 ML 개발을 목표로 하고 있다. 개인적으로 머신러닝 엔지니어가 조금 더 적성에 맞는것 같다. 다음에는 ML 엔지니어의 일에 대해서 작성.. 더보기
딥러닝의 과대적합(Overfitting)을 해결하자 Train 데이터셋에 대한 학습은 잘 되고 있지만, Validation loss가 감소하지 않고 증가하면 보통 우리는 Train 데이터셋에 과대적합 (오버피팅)이 일어났다고 할 수 있다. 왜 오버피팅이 문제가 되는가? 그것은 모든 ML 알고리즘의 목적은 일반화 성능에 있기 때문이다. 우리가 학습을 통해 배운 알고리즘은 학습 데이터에서만 잘 작동하면 문제가 될 것이다. 즉, 우리가 보지 못한 Unseen 데이터에 잘 작동해야 한다. 따라서, 일반화 성능을 높이기 위해서 우리는 오버피팅을 고려해야 한다. 딥러닝 아키텍쳐를 구성하기 시작하는 순간 오버피팅과의 싸움이 일어난다. 따라서, 다양한 기법을 통해 이를 해결하기 위해 노력해야한다. 그럼 과소적합과 과대적합은 무슨 차이일까? 과소 적합은 데이터를 제대로 .. 더보기