플레이데이터 부트캠프 데이터 엔지니어링 트랙 20주차 (10.16~.20)

안인균·2023년 10월 23일
0
post-thumbnail

벌써 20주차에 들어섰습니다. 곧 있을 파이널 프로젝트도 대비해야하며, 마지막 강의가 시작된만큼 끝까지 마무리를 잘 할 것입니다.
이번 강의는 Docker 와 Kubernetes 이지만, Github 를 기본으로 하여, 깃허브를 어떻게 사용하는 지 협업은 어떻게 진행되는 지 등을 알게 되었습니다. 이 과정에서 다양한 내용들을 학습하게 될 예정이며, 모든 내용들은 깃허브를 활용해 다른 사람들과 공유하고 협업하는 방식으로 진행되었습니다.


Learned

  • apache-kafka(카프카) 을 활용하는 학습을 진행했습니다.
    1. topic(토픽 == 테이블) 을 생성하고
    2. location.csv 파일로부터 데이터를 받아
    3. KSQLAPI 를 통해 해당 토픽에 저장하고
    4. 리눅스 환경에서 ksql 로 데이터를 조회하는 과정을 진행했습니다.

해당 토픽, car_location_topic 은 이후 버스 도착 예측을 하는데 사용되는 학습 데이터 입니다.

  • Spark(스파크) 와 카프카를 통해 버스 도착 시간을 예측하는 학습을 진행했습니다.

    1. 사용된 스파크 모델은 spark_bus_ml 을 통해 도출된 RandomForest 모델입니다.
    2. 위의 car_location_topic 은 30초마다 버스의 실시간 위치 정보를 저장되고
    3. 예측은 해당 토픽의 데이터를 넘겨 받기 때문에 이 또한 30초마다 데이터가 축적됩니다.

이전에 학습한 ElasticSearch 도 실시간 데이터 저장이 가능하지만, Apache-Kafka 의 경우 실시간으로 무엇이 저장되었는 지를 보여주기 때문에 편리해 많이 사용합니다. 그러나 카프카는 저장 및 조회만 가능하기에 불편한 점도 있습니다. (수정, update 기능이 없음)

  • 파이썬 주피터 노트북을 통해 Kafka topic 에 제주 버스 위치 정보를 저장하는 것과 Spark 모델 을 이용한 버스 시간 예측 데이터를 또 다른 카프카 토픽에 저장 하는 과정을 진행했습니다.

    • 우선, 카프카 2개와 스파크 등을 동시에 활용하기 때문에 컴퓨터 메모리 부족 현상에 대비해

    • 도커 메모리 제한을 ./wslconfig 파일 작성, "✅ 코드1" 과 같이하여 잘 작동되는 환경을 만들었습니다.

    • 또한 데이터 저장 주기가 30초가 아닌 2분에서 10분 사이 랜덤 값으로 조정해 부담을 덜었습니다.

    • 두 개의 카프카 토픽에 잘 저장되는 것을 확인할 수 있었으나 이후 학습에서

    • Spring boot 를 사용할 예정인데, 해당 상황에서 발생할 과부하 문제에 대비하기 위해

    • "버스 시간 예측 데이터" 는 카프카가 아닌 MySQL 에 저장하는 것으로 만들었습니다.

    • 이후 bus_station.csv 파일을 통해 여러 SQL 쿼리 문으로 데이터들을 확인할 수 있었습니다.

코드1

[wsl2]
memory=3GB
swap=16GB

## 3기가의 메모리 사용 시 하드 디스크의 16기가를 메모리처럼 대체 사용한다.

이미지1

image

  • 리눅스 터미널 환경에서 학습을 진행했으며, 터미널 환경에 익숙해지면서 Github 를 사용하는 방식에 대해 학습을 진행했습니다.

    • 단지, 깃허브를 어떻게 쓰는 지 배우는 것만이 아닌,
    • "실무에서 어떻게 작업하고, 신입 엔지니어, 개발자들은 어떤 식으로 환경에 적응해가는 지" 를 경험하는 방식으로 진행되었습니다.
    • 이전 깃허브 관련 툴을 사용하는 것이 아닌 터미널 창에 직접 git 관련 명령어를 사용하면서 동작되는 방식을 알 수 있었습니다.
    • 이후의 모든 학습 또한 터미널에서 이뤄졌으며, 또한 깃허브에 업로드 하고,
    • Pull requests 를 작성하면서 협업할 때 이를 어떻게 사용되는 지에 대한 설명을 들을 수 있었습니다.
  • Ubuntu 환경에서 pdm 을 통해 pypi.org 에 나만의 파이썬 패키지를 만들고 배포하는 과정을 진행했습니다.

    • hello-aaingyunii_pr repo에서 확인할 수 있고,
    • Pull request 를 통해 여러 버전이 업데이트 되면서 계속 배포를 진행했습니다.
  • aaingyunii.github.io repo를 만들고 html5up.net 에서 다운 받은 템플릿을 편집하면서 저만의 사이트 작성을 진행했습니다.

  • github 협업 학습을 진행했습니다.

    • 학습의 전반적인 기반이 깃허브와 협업을 과정에 익숙해져가는 내용이었습니다.
    • 윈도우 터미널 환경, 우분투 환경에서 진행하며 리눅스 명령어와 vim 편집기를 자주 사용하며 익숙해질 수 있었습니다.
    • 깃허브에서 Issues, Pull requests, Actions 탭 등의 활용이 어떻게 되는 지 알 수 있었습니다.
    • Release, Deployments 등이 어떻게 사용하는 지 알 수 있었습니다.
    • 이외에도 깃허브의 다양한 기능들을 경험하고 사용하는 과정을 학습할 수 있었습니다.
  • dj-twenty-six -> Organization IDcontributor 가 되어 다른 학생들과 함께 한 repo에서 각자 branch를 만들고 코드를 수정하고 merge 하는 과정을 경험했습니다.

    • 각자 push 이후 Pull requests에 등록하며 서로 코드를 리뷰하고
    • merge 까지 하는 과정을 학습할 수 있었습니다.
  • aaingyunii.github.io -> 개인 블로그 페이지를 이전에는 깃허브에서 deploy 했지만 이번에는 firebase 를 통해 aaingyunii.web.app 링크로 배포하였습니다.

Liked

  • 카프카, 스파크 등 다양한 빅데이터 관련 시스템들을 활용할 수 있어 매우 좋았습니다.

  • 카프카를 통해 실시간으로 데이터를 추가 및 조회하며 해당 데이터를 사용해 스파크 모델로 예측하는 과정이 매우 흥미로웠고 이전에 배웠던 airflow와는 다른 느낌이었기 때문에 매우 만족스러운 학습이었습니다. 이외에도 많은 빅데이터 관련 시스템들이 존재하는데 이들이 때에 따라 어떻게 사용되는 지 알 수 있었고 이러한 실습 과정을 통해 더 알게 될 수 있어 좋았습니다.

  • 카프카를 통해 실시간으로 데이터들이 "이동-계산-저장-조회" 등이 이뤄지는 것을 볼 수 있어 좋았습니다. 빅데이터 시스템 관련 수업 이전에는 웹 개발이나 데이터 분석, 코딩 학습 등 한 곳에 국한된 학습 과정들이 많았는데
    이번 학습을 통해 "도커 - 리눅스(우분투) - 하둡(하이브, 피그) - 엘라스틱 서치 - 스파크 - 카프카" 등 이전과 다른 엄청 다양한 내용들을 다룰 수 있어 좋았고 특히 vscode, zeppelin, elastic 등 다양한 환경에서 이뤄지는 프로그래밍들이 서로 조화를 이루고 데이터들이 공유가 되면서 하나의 결과물로 확인할 수 있어 매우 좋았습니다.

  • 이전부터 깃허브 업로드를 하고 있었지만 "협업 툴" 임에도 불구하고, 개인 repo 관리만 할 줄 알았고 어떻게 다른 사람들과 사용하는 지 몰랐는데 이번 강의를 통해 이에 대해 배울 수 있게 되어 매우 좋았습니다.

  • 단지 코딩만을 위한 것이 아니라, "엔지니어" 란 이런 것을 할 줄 알아야 한다. 이런 생각이 드는 강의였고, 앞으로의 수업이 기대되었습니다. 어려운 내용이지만 열심히 잘 따라가야겠다는 생각이 먼저 들었습니다.

  • pdmpypi.org 를 통해 파이썬 코드들을 배포하는 것을 알게 되어 매우 좋았습니다. 이를 통해 무분별한 코드 복사를 하지 않아도 될 수 있겠다라는 생각과 프로젝트에서 이를 어떻게 사용하면 될 지에 대한 고민이 생겼지만 좋은 방향이었기에 만족스러웠습니다.

  • 전체 수업 내용에 만족했습니다. 이전 처럼 "프로그래밍 언어를 배운다거나, 빅데이터 시스템을 학습하거나 무언가 개발하거나" 이런 것이 아닌 Github 를 관리하고 사용하는 방법을 학습하지만 이 또한 매우 중요한 내용이라고 생각했었고 이렇게 다양한 활동을 하면서 배울 수 있는 경험은 흔치 않다고 생각했기 때문에 만족했습니다.

  • docker 환경을 통해 수정한 코드, 웹 테스트 를 진행하는 과정이 실무에서 하는 것처럼 하는 과정을 경험할 수 있었고, 이 다음 프로젝트에서 활용될 수도 있다고 생각하여 만족스러웠습니다.

Lacked

  • 학습에 사용되는 컴퓨터에서 카프카와 스파크가 동시에 구동되는 것이 힘들어 홈PC를 통해 구현할 수 밖에 없어서 아쉬웠습니다.
    이전의 학습 내용들이 많이 축적되어 컴퓨터의 용량도 부족했기 때문에 발생된 것 같았고 시일 내에 포맷 과정을 치뤄야할 것 같습니다.

  • 이후 백엔드 - 프론트 엔드 관련 실습과정이 남아있었으나 시간 부족으로 다 하지 못한 것이 아쉬웠습니다. 그래도 강의자료는 공유해주신다고 하여 이후에 확인하고 실습을 마칠 수 있을 것 같습니다.

Longed for

0개의 댓글