분류 전체보기
-
Kubernetes? 컨테이너 클러스터(대규모)에서의 어플리케이션을 손쉽게 배포, 관리할 수 있도록 도와줌 GKE(Google Kubernetes Engine) 구글의 인프라를 활용해 추가 기능 제공 Load balancing : 인스턴스 그룹에 대한 부하 분산 및 자동 확장 기능 제공하여 다음과 같은 이점 제공 앱 확장 높은 트래픽 지원 비정상적인 VM 인스턴스 자동으로 삭제/추가 트래픽을 가장 가까운 가장 머신으로 라우팅 Node pools : 클러스터 내 구성이 모두 동일한 노드 그룹으로 노드 풀 마다 독립적으로 작업 가능 Automatic scaling : 클러스터의 노드 풀 크기를 수요에 따라 자동으로 조절하여 가용성을 높이고 비용을 통제 가능 Automatic upgrades : 클러스터가 업..
[QWIKLABS] GKE 사용해보기Kubernetes? 컨테이너 클러스터(대규모)에서의 어플리케이션을 손쉽게 배포, 관리할 수 있도록 도와줌 GKE(Google Kubernetes Engine) 구글의 인프라를 활용해 추가 기능 제공 Load balancing : 인스턴스 그룹에 대한 부하 분산 및 자동 확장 기능 제공하여 다음과 같은 이점 제공 앱 확장 높은 트래픽 지원 비정상적인 VM 인스턴스 자동으로 삭제/추가 트래픽을 가장 가까운 가장 머신으로 라우팅 Node pools : 클러스터 내 구성이 모두 동일한 노드 그룹으로 노드 풀 마다 독립적으로 작업 가능 Automatic scaling : 클러스터의 노드 풀 크기를 수요에 따라 자동으로 조절하여 가용성을 높이고 비용을 통제 가능 Automatic upgrades : 클러스터가 업..
2024.03.04 -
머신러닝 시스템 설계 : MLOps MLOps 구성 요소 비즈니스 요구 사항 구현 데이터 스택 관리 인프라 구축 배포 및 모니터링 MLOps 구축 과정 ‘목적’, ‘요구사항’, ‘프로세스’를 설계하고 구축해야 함 ‘왜 필요한 지’ → ‘신뢰성, 확장성, 유지보수성, 적응성을 만족하는 지’ 개선 작업이 반복적으로 발생함 풀고자 하는 문제를 ML로 해결 가능한 형태로 구조화해야 함 동일한 문제더라도 구조화 방식에 따라 난이도는 천차만별 2.1 비즈니스와 머신러닝의 목적 ML 프로젝트 목적 고민 필요 ML 지표 vs 비즈니스 지표 연구가 아니라면 비즈니스 지표를 ML 프로젝트로 끌어올릴 방법을 찾아야 함 비즈니스의 핵심은 이익 극대화 → ML 프로젝트로 어떤 ‘성과 지표’에 영향을 줄 수 있는지 설명할 수 있..
[머신러닝 시스템 설계 정리] Chapter2 : 머신러닝 시스템 설계 소개머신러닝 시스템 설계 : MLOps MLOps 구성 요소 비즈니스 요구 사항 구현 데이터 스택 관리 인프라 구축 배포 및 모니터링 MLOps 구축 과정 ‘목적’, ‘요구사항’, ‘프로세스’를 설계하고 구축해야 함 ‘왜 필요한 지’ → ‘신뢰성, 확장성, 유지보수성, 적응성을 만족하는 지’ 개선 작업이 반복적으로 발생함 풀고자 하는 문제를 ML로 해결 가능한 형태로 구조화해야 함 동일한 문제더라도 구조화 방식에 따라 난이도는 천차만별 2.1 비즈니스와 머신러닝의 목적 ML 프로젝트 목적 고민 필요 ML 지표 vs 비즈니스 지표 연구가 아니라면 비즈니스 지표를 ML 프로젝트로 끌어올릴 방법을 찾아야 함 비즈니스의 핵심은 이익 극대화 → ML 프로젝트로 어떤 ‘성과 지표’에 영향을 줄 수 있는지 설명할 수 있..
2024.02.26 -
ML 프로젝트 구성 개요 비즈니스 요구 사항 구현 사용자/개발자 상호 작용 고려 데이터 및 모델 관리 인프라(모니터링 및 업데이트) 구성 ML 알고리즘 구성 1.1 머신러닝을 사용해야 하는 경우 💡 머신러닝 : 기존 데이터로부터 복잡한 패턴을 학습하고 이를 통해 본 적 없는 데이터에 대해 예측을 수행하는 접근법 1. 시스템이 학습에 적합한 경우 학습할 대상인 데이터가 있고 이를 통해 문제를 해결할 수 있어야 함 숙소 임대료 예측? → 넓이, 방, 개수, 지역, 편의 시설, 평점 등이 있는 Airbnb에서 가능 2. 학습할 복잡한 패턴이 존재하는 경우 무작위가 아닌 패턴이 존재 해야 함 너무 단순한 문제가 아니여야 함 최종적으로 시스템 스스로 복잡한 패턴 학습 → 소프트웨어 2.0 3. 사용 가능한 데이터..
[머신러닝 시스템 설계 정리] Chapter1 : 머신러닝 시스템 개요ML 프로젝트 구성 개요 비즈니스 요구 사항 구현 사용자/개발자 상호 작용 고려 데이터 및 모델 관리 인프라(모니터링 및 업데이트) 구성 ML 알고리즘 구성 1.1 머신러닝을 사용해야 하는 경우 💡 머신러닝 : 기존 데이터로부터 복잡한 패턴을 학습하고 이를 통해 본 적 없는 데이터에 대해 예측을 수행하는 접근법 1. 시스템이 학습에 적합한 경우 학습할 대상인 데이터가 있고 이를 통해 문제를 해결할 수 있어야 함 숙소 임대료 예측? → 넓이, 방, 개수, 지역, 편의 시설, 평점 등이 있는 Airbnb에서 가능 2. 학습할 복잡한 패턴이 존재하는 경우 무작위가 아닌 패턴이 존재 해야 함 너무 단순한 문제가 아니여야 함 최종적으로 시스템 스스로 복잡한 패턴 학습 → 소프트웨어 2.0 3. 사용 가능한 데이터..
2024.02.19 -
스타트업에 관심이 많다면, '린(LEAN)하다'는 표현을 한번 쯤은 들어본 적이 있을 것이다. '린'하게 일한다는 것이 무엇이고, 또 어떻게 실천할 수 있는 지에 대해서 궁금 하다면, 위 책을 읽는 것을 추천한다. 책에선 아이디어를 시장에 적합한 제품으로 만들기 까지의 과정을 설계 - 검증 - 성장의 단계로 구분해 제시하고 있다. 특히 10년 간 다양한 사례로 검증한 최적의 방법을, '스티브'와 '메리'라는 가상 인물 간의 대화 형태로 다뤄 독자들이 쉽게 이해할 수 있도록 제공하고 있다. '린'하게 일하고 싶은 사업가, PM, 개발 직무 등 스타트업의 구성원 모두에게 추천하고 싶은 책이다. 한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다.
[리뷰] 린 스타트업 (10주년 기념 전면 개정판)스타트업에 관심이 많다면, '린(LEAN)하다'는 표현을 한번 쯤은 들어본 적이 있을 것이다. '린'하게 일한다는 것이 무엇이고, 또 어떻게 실천할 수 있는 지에 대해서 궁금 하다면, 위 책을 읽는 것을 추천한다. 책에선 아이디어를 시장에 적합한 제품으로 만들기 까지의 과정을 설계 - 검증 - 성장의 단계로 구분해 제시하고 있다. 특히 10년 간 다양한 사례로 검증한 최적의 방법을, '스티브'와 '메리'라는 가상 인물 간의 대화 형태로 다뤄 독자들이 쉽게 이해할 수 있도록 제공하고 있다. '린'하게 일하고 싶은 사업가, PM, 개발 직무 등 스타트업의 구성원 모두에게 추천하고 싶은 책이다. 한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다.
2023.07.23 -
팀 단위 개발에 필요한 Git, Github의 개념과 실제 사용법을 다루고 있는 책이다. 찾아보니 저자 분들의 기존 Git 강의를 좀 더 발전 시켜서 책으로 까지 출판한 거 같다. 그래서 아래 링크를 참고하면 책이 대략적으로 어떤 느낌으로 서술돼 있는지 확인할 수 있을 것이다..! 초심자를 위한 Github 협업 튜토리얼 (with 토끼와 거북이) – 블로그 이사갔어요! https://milooy.github.io/ (wordpress.com) [무료] Git과 GitHub 시작하기 - 인프런 | 강의 (inflearn.com) 책은 ‘무조건 쉽게. 단, 제대로’라는 집필 목표에 충실하게 구성돼 있다. 따라서 Git과 Github를 먼저 GUI 환경에서 익히고, 이후 CLI 환경에서 레벨업할 수 있는 다..
[리뷰] 팀 개발을 위한 Git, Github 시작하기팀 단위 개발에 필요한 Git, Github의 개념과 실제 사용법을 다루고 있는 책이다. 찾아보니 저자 분들의 기존 Git 강의를 좀 더 발전 시켜서 책으로 까지 출판한 거 같다. 그래서 아래 링크를 참고하면 책이 대략적으로 어떤 느낌으로 서술돼 있는지 확인할 수 있을 것이다..! 초심자를 위한 Github 협업 튜토리얼 (with 토끼와 거북이) – 블로그 이사갔어요! https://milooy.github.io/ (wordpress.com) [무료] Git과 GitHub 시작하기 - 인프런 | 강의 (inflearn.com) 책은 ‘무조건 쉽게. 단, 제대로’라는 집필 목표에 충실하게 구성돼 있다. 따라서 Git과 Github를 먼저 GUI 환경에서 익히고, 이후 CLI 환경에서 레벨업할 수 있는 다..
2023.06.25 -
비즈니스 문제를 해결하기 위한 머신러닝 시스템 설계 전 과정을 다루고 있는 책이다. 스탠포드 대학의 CS239S 강의를 책으로 재 구성한 것으로, 머신러닝 실무자인 저자의 다양한 노하우가 담겨져 있다. 시스템 설계 시 고민해야 할 점과 발생할 수 있는 문제들을 미리 짚어주기 때문에, 기존의 시스템을 이해할 때도, 새로운 시스템을 구성할 때도 큰 도움이 될 수 있는 책이다. 특히 책 속에 언급되는 예시들이 현실에 가깝고 직관적이라서 좋았다. 책은 우선, 머신러닝 시스템 및 시스템 설계 과정을 개괄적으로 다룬다. 이후엔 시스템 구성 요소들을 차곡 차곡 채워 나간다. 데이터 처리, 모델 개발, 배포 및 서비스 구축, 모니터링, 연속 학습 등의 순으로 설계 과정을 차례로 다루고, 이를 통해 다양한 팁과 문제 해..
[리뷰] 머신러닝 시스템 설계비즈니스 문제를 해결하기 위한 머신러닝 시스템 설계 전 과정을 다루고 있는 책이다. 스탠포드 대학의 CS239S 강의를 책으로 재 구성한 것으로, 머신러닝 실무자인 저자의 다양한 노하우가 담겨져 있다. 시스템 설계 시 고민해야 할 점과 발생할 수 있는 문제들을 미리 짚어주기 때문에, 기존의 시스템을 이해할 때도, 새로운 시스템을 구성할 때도 큰 도움이 될 수 있는 책이다. 특히 책 속에 언급되는 예시들이 현실에 가깝고 직관적이라서 좋았다. 책은 우선, 머신러닝 시스템 및 시스템 설계 과정을 개괄적으로 다룬다. 이후엔 시스템 구성 요소들을 차곡 차곡 채워 나간다. 데이터 처리, 모델 개발, 배포 및 서비스 구축, 모니터링, 연속 학습 등의 순으로 설계 과정을 차례로 다루고, 이를 통해 다양한 팁과 문제 해..
2023.05.28 -
문제 확인하기 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 나의 풀이 팰린드롬은 앞으로 읽어도, 거꾸로 읽어도 똑같은 단어다. 문제에선 뒤에 몇 글자를 추가해야 팰린드롬이 되는지 확인하고 싶어한다. 이를 위해선 현재 단어 중 어느 부분까지가 팰린드롬인지 체크해야 한다. 결국 i를 바꿔가며 순 방향, 역 방향 문자열이 동일한지 확인하면 된다. S = input() for i in range(len(S)): if S[i:] == S[i:][::-1]: palindrome = S + S[:i][::-1] print(..
[Python] 백준 1254번 팰린드롬 만들기 풀이문제 확인하기 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 나의 풀이 팰린드롬은 앞으로 읽어도, 거꾸로 읽어도 똑같은 단어다. 문제에선 뒤에 몇 글자를 추가해야 팰린드롬이 되는지 확인하고 싶어한다. 이를 위해선 현재 단어 중 어느 부분까지가 팰린드롬인지 체크해야 한다. 결국 i를 바꿔가며 순 방향, 역 방향 문자열이 동일한지 확인하면 된다. S = input() for i in range(len(S)): if S[i:] == S[i:][::-1]: palindrome = S + S[:i][::-1] print(..
2023.05.26 -
Scaling up(수직 확장) 더 많은 요청을 처리하기 위해 단일 서버 스펙을 업그레이드한다. 단일 서버에서 모든 데이터를 처리하기 때문에, Data Integrity(데이터 무결성)와 Data Consistency(데이터 정합성)가 중요한 DB 서버 등에서 활용된다. 단일 서버에 부하가 집중되는 특징이 있고, 서버 이상 시 전체 시스템이 동작하지 않는 SPOF(Single Point of Failure) 문제가 발생할 수 있다. 하드웨어에 의존적이기 때문에 업그레이드 시 서버가 필연적으로 다운되고, 필요 부품 비용이 높을 수 있다. 여러 서버를 묶어 클러스터를 구성하거나, 데이터 일관성을 유지하기 위한 노력이 필요 없어 확장 과정이 비교적 단순하다. 물론 그 만큼 유연성은 떨어진다. Scaling o..
[Web] Scaling up(수직 확장)과 Scaling out(수평 확장) 알아보기Scaling up(수직 확장) 더 많은 요청을 처리하기 위해 단일 서버 스펙을 업그레이드한다. 단일 서버에서 모든 데이터를 처리하기 때문에, Data Integrity(데이터 무결성)와 Data Consistency(데이터 정합성)가 중요한 DB 서버 등에서 활용된다. 단일 서버에 부하가 집중되는 특징이 있고, 서버 이상 시 전체 시스템이 동작하지 않는 SPOF(Single Point of Failure) 문제가 발생할 수 있다. 하드웨어에 의존적이기 때문에 업그레이드 시 서버가 필연적으로 다운되고, 필요 부품 비용이 높을 수 있다. 여러 서버를 묶어 클러스터를 구성하거나, 데이터 일관성을 유지하기 위한 노력이 필요 없어 확장 과정이 비교적 단순하다. 물론 그 만큼 유연성은 떨어진다. Scaling o..
2023.05.26 -
설치 방법 설치 curl -sSL get.docker.com | sh 권한 부여 sudo usermod -aG docker $USER sudo service docker restart Docker 관련 명령어 docker run Image(이미지)를 통해 Container(컨테이너) 생성 docker run 명령어 기본 형식 docker run () () () 옵션 -it : 터미널을 활용해 컨테이너 접근 → /bin/sh 실행 시 활용 가능 docker run -it /bin/sh -p : Port Forwarding 옵션 로컬 포트 : 컨테이너 포트의 형식 # 컨테이너의 8080 포트를 로컬의 80 포트를 사용해서 접근 docker run -p 80:8080 -d : 컨테이너를 백그라운드에서 실행 →..
[Docker] Docker 설치 방법 및 기본 명령어 알아보기설치 방법 설치 curl -sSL get.docker.com | sh 권한 부여 sudo usermod -aG docker $USER sudo service docker restart Docker 관련 명령어 docker run Image(이미지)를 통해 Container(컨테이너) 생성 docker run 명령어 기본 형식 docker run () () () 옵션 -it : 터미널을 활용해 컨테이너 접근 → /bin/sh 실행 시 활용 가능 docker run -it /bin/sh -p : Port Forwarding 옵션 로컬 포트 : 컨테이너 포트의 형식 # 컨테이너의 8080 포트를 로컬의 80 포트를 사용해서 접근 docker run -p 80:8080 -d : 컨테이너를 백그라운드에서 실행 →..
2023.05.16 -
문제 상황 opencv를 포함한 Docker 이미지를 만들 때 cv2의 의존 패키지가 없을 때 발생한다. 해결 방법 의존 패키지를 추가로 설치하거나 opencv-python-headless과 같이 애초에 서버용으로 제작된 라이브러리를 활용하자. opencv-python-headless 사용하기 RUN pip3 install opencv-python-headless 의존 패키지 직접 설치하기 RUN apt-get update && apt-get install libgl1-mesa-glx -y RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y 참고 ImportError: libGL.so.1: cannot open shared object fil..
Docker 환경에서 ImportError: libGL.so.1: cannot open shared object file: No such file or directory 발생 시 해결 방법문제 상황 opencv를 포함한 Docker 이미지를 만들 때 cv2의 의존 패키지가 없을 때 발생한다. 해결 방법 의존 패키지를 추가로 설치하거나 opencv-python-headless과 같이 애초에 서버용으로 제작된 라이브러리를 활용하자. opencv-python-headless 사용하기 RUN pip3 install opencv-python-headless 의존 패키지 직접 설치하기 RUN apt-get update && apt-get install libgl1-mesa-glx -y RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y 참고 ImportError: libGL.so.1: cannot open shared object fil..
2023.05.13 -
문제 상황 Docker에서 poetry install 하는 과정에서 doest not contain any element 오류가 발생했다. packages = [] 가 설정돼 있어, 상위 디렉토리의 의존성까지 확인하는 것이 원인이라고 한다. packages = [{include = "style_transfer"}] 해결 방법 1. poetry install에 --no-root 옵션을 준다. poetry install --no-root 2. packages = [] 라인 자체를 삭제한다. packages = [{include = "style_transfer"}] 참고 Poetry install on an existing project Error "does not contain any element" I a..
Poetry의 does not contain any element 오류 해결하기문제 상황 Docker에서 poetry install 하는 과정에서 doest not contain any element 오류가 발생했다. packages = [] 가 설정돼 있어, 상위 디렉토리의 의존성까지 확인하는 것이 원인이라고 한다. packages = [{include = "style_transfer"}] 해결 방법 1. poetry install에 --no-root 옵션을 준다. poetry install --no-root 2. packages = [] 라인 자체를 삭제한다. packages = [{include = "style_transfer"}] 참고 Poetry install on an existing project Error "does not contain any element" I a..
2023.05.12 -
허브(더미 허브) : L1 장비 L1(Physical Layer)에서 동작하며 멀티 포트를 통해 여러 컴퓨터 및 네트워크 장비들을 연결해주는 장치이다. 신호를 증폭해주는 리피터이기도 하다. 허브는 L1 장비라서 통신 시 목적지로서 활용할 수 있는 MAC, IP 정보가 없다. 따라서 통신 시 모든 장비에게 데이터를 전송하게 된다. 결국 허브 내 장비가 많아지면 그 만큼 대역폭에서 손해를 보게 되는 구조이다. 스위치 : L2 장비 L2(Data-Link Layer)에서 동작하며 Frames(프레임)의 MAC 주소를 참고해 해당하는 장비에 데이터를 전달해주는 장치이다. 스위치는 해당 네트워크의 MAC 주소를 테이블로 저장하고 있는데, 입력된 프레임의 MAC 주소가 테이블에 없을 경우는 허브와 동일하게 모든 장..
[Network] Hub(허브, L1), Switch(스위치, L2), Router(라우터, L3), 공유기(L4) 차이점 알아보기허브(더미 허브) : L1 장비 L1(Physical Layer)에서 동작하며 멀티 포트를 통해 여러 컴퓨터 및 네트워크 장비들을 연결해주는 장치이다. 신호를 증폭해주는 리피터이기도 하다. 허브는 L1 장비라서 통신 시 목적지로서 활용할 수 있는 MAC, IP 정보가 없다. 따라서 통신 시 모든 장비에게 데이터를 전송하게 된다. 결국 허브 내 장비가 많아지면 그 만큼 대역폭에서 손해를 보게 되는 구조이다. 스위치 : L2 장비 L2(Data-Link Layer)에서 동작하며 Frames(프레임)의 MAC 주소를 참고해 해당하는 장비에 데이터를 전달해주는 장치이다. 스위치는 해당 네트워크의 MAC 주소를 테이블로 저장하고 있는데, 입력된 프레임의 MAC 주소가 테이블에 없을 경우는 허브와 동일하게 모든 장..
2023.05.08