본문 바로가기

전체 글

depends-on으로 Docker Container 실행 순서 설정하기 여러 개의 docker container를 docker-compose.yml로 구동시킬 때 재미있는 에러를 발견했다. 구동시킨 docker container는 web app, db(postgres), prometheus, grafana, rabbitmq 총 5개이고, 대략적인 프로세스는 2가지이다. web app에서 발생된 데이터를 rabbitmq queue에 저장한 뒤 일정 주기로 db에 저장하는 것 web app의 metrics를 prometheus로 수집하고 grafana로 대시보드를 만드는 것 docker-compose.yml을 만들고 실행을 시키니 web app container를 구동시킬 때 에러가 발생하였다. 그 이유는 web app container와 rabbitmq container를.. 더보기
주식은 과연 연속성 데이터일까? 최근 2개의 프로젝트를 주식 관련해서 진행하면서 들었던 생각입니다. 보통 LSTM이나 시계열 모델을 배우고 난 뒤 가장 많이 하는 테스트 중 하나가 바로 주식 가격 예측입니다. 많은 사람들이 시도했음에도 아직도 우리는 주식 시장을 예측할 수 없을까요? 저는 한 가지 의문점이 생겼습니다. 주식은 연속성의 데이터일까? 그전에 연속성이라는 정의부터 다시 살펴보겠습니다. 연속성이란? 끊이지 아니하고 쭉 이어지거나 지속되는 성질이나 상태. 출처 - wordrow 즉, 연속성 데이터를 데이터가 끊이지 않고 쭉 이어지는 것이라고 알 수 있습니다. 예를 들어, 한 사람 일생동안의 키나 몸무게처럼 말이죠. 위 정의에 따르면 주식은 연속성 데이터가 맞는 것 같습니다. 왜냐하면 매일매일 종가가 발생하기 때문입니다. 그렇다면.. 더보기
Jupyter에서 Spark 사용하기 w.Python 이전 포스팅에 이어서 이번에는 Jupyter에서 간단하게 Spark를 사용해보고 Spark history server에 어떻게 기록되는지 알아보겠습니다. 1. Create Spark Session 우선 Jupyter에 접속해 테스트에 사용할 임의의 폴더를 만들고 Jupyter Notebook 파일을 생성하겠습니다. Notebook을 누르면 화면이 바뀌면서 팝업 창으로 커널을 선택하라고 나오게 되고 이때 Docker에 설치된 Python을 선택합니다. 오른쪽 상단에 선택한 언어의 이미지가 보이게됩니다. 이제 아래 예시 코드를 cell에 입력한 뒤 실행을 해주면 Spark Session이 생성됩니다. from pyspark.sql from SparkSession spark = SparkSession.buil.. 더보기
Docker로 Spark 환경 구축하기 그동안 진행했던 사이드 프로젝트들은 오히려 Spark를 사용하는 것이 오버 엔지니어링이 될 것 같아 이론만 주로 학습했었는데, 이제는 사이드 프로젝트에서도 Spark를 사용하기 위해서 직접 환경을 구축해 봤습니다. 이론은 패스트캠퍼스에서 강의를 듣고 있는데 spark 실습은 AWS EMR 상에서 이루어져 있기 때문에....! 이번에는 하나의 Docker Ubuntu에 Spark를 설치한 다음 Base Spark Image로 만들어 새롭게 Container로 만들어 Jupyter까지 설치해보겠습니다. 1. Docker Ubuntu에 Spark 설치 1-1. Docker Ubuntu Image를 가져온뒤 Container로 띄워주기 docker pull ubuntu:20.04 docker container.. 더보기
GitHub Actions로 AWS Lambda Deploy (2) 저번 포스팅의 GitHub Actions의 개념과 yml 파일을 작성하는 법에 이어서 본격적으로 GitHub Actions(이하 Actions)를 이용하여 AWS Lambda(이하 Lambda)에 배포하는 방법을 소개해드리겠습니다. Lambda 만들기 우선, Lambda를 만들어 주겠습니다. AWS Console에서 Lambda로 들어가면 아래와 같은 화면과 오른쪽 상단에 함수 생성이라는 버튼을 눌러줍니다. 그러면 아래 이미지처럼 함수 이름, 런타임 등을 설정할 수 있는 화면이 나오게 됩니다. 이때, Lambda를 생성할 때 새로 작성, 블루프린트 사용, 컨테이너 이미지 이렇게 3가지 유형을 선택할 수 있습니다. 이번에는 간단하게 테스트만 해볼 것인기 때문에 새로 작성을 선택해서 Lambda를 만들어주겠.. 더보기
GitHub Actions로 AWS Lambda Deploy (1) 이전 몇몇 프로젝트를 하면서 GitHub Actions와 Jenkins는 조금 다뤄보았는데 이번 조코딩 해커톤을 진행하면서 AWS 서비스와 GitHub Actions를 연동은 처음 해봤기 때문인지 꽤 많이 헤매서 한 번 정리해보려고 합니다. 먼저 GitHub Actions란? GitHub Docs에 나와있는 설명은 다음과 같이 나와있습니다. 레포지토리에서 바로 소프트웨어 개발 워크플로를 자동화, 사용자 지정 및 실행합니다. CI/CD를 포함하여 원하는 작업을 수행하기 위한 작업을 검색, 생성 및 공유하고 완전히 사용자 정의된 워크플로에서 작업을 결합할 수 있습니다. 조금 쉽게 말하면 Repo에서 Push, Fork처럼 특정 동작을 수행했을 때 미리 설정해 둔 작업을 자동으로 실행시켜 주는 기능입니다. 아.. 더보기
MLOps의 구성 요소는? 이전 MLOps 글을 작성한 지 벌써 1년이나 지났는데... 변명을 해보자면 MLOps를 계속해서 공부를 하고는 있었지만, 직장 생활을 하면서 글을 작성한다는 게 쉽지는 않다는 것을 깨달았고 Dart & Flutter 등 다른 언어들을 공부하느라 소홀했습니다...ㅎ (Dart & Flutter는 공부하면서 꽤나 재밌었기 때문에 조만간 글을 작성할 계획입니다.) 아무튼 이제 개인적인 시간도 많아졌고 해서 다시 한번 꾸준히 글을 작성해 볼 생각입니다. 1년 전 MLOps 관련 글은 MLOps가 등장하게 된 배경, MLOps가 DevOps와 다른 점에 대해서 알아보았습니다. 이번에는 MLOps의 구성 요소에 대해서 정리해 볼까 합니다. 시작하기 전에, MLOps가 DevOps를 참고해서 만든 만큼 구성 요소도.. 더보기
데이터 엔지니어와 백엔드 엔지니어의 차이? ※ 필자도 데이터 엔지니어링을 공부하고 있는 한 사람이기 때문에 이 글에서 말하고 있는 것은 한 사람의 의견으로 봐주시면 감사하겠습니다. ※ 데이터 엔지니어링을 공부하면서 들었던 생각 중 하나가 "데이터 엔지니어와 백엔드 엔지니어의 차이를 현업에서는 어떻게 바라보고 있을까?"였습니다. 이런 궁금증을 가지고 구글링을 하면서 여러 글들을 보고 제 나름대로는 정리가 됐지만 Wanted에서 채용 공고들을 크롤링해서 한 번 DE와 BE의 업무가 얼마나 다른지 한 번 더 살펴보기로 했습니다. 데이터 수집 Wanted에서 Data Engineer, 데이터엔지니어, 데이터 엔지니어, 백엔드 엔지니어, Backend Engineer의 키워드를 사용해서 채용 공고들을 크롤링해서 csv파일로 저장했습니다. (DevOps E.. 더보기