벌써 20주차에 들어섰습니다. 곧 있을 파이널 프로젝트도 대비해야하며, 마지막 강의가 시작된만큼 끝까지 마무리를 잘 할 것입니다.
이번 강의는 Docker 와 Kubernetes
이지만, Github
를 기본으로 하여, 깃허브를 어떻게 사용하는 지 협업은 어떻게 진행되는 지 등을 알게 되었습니다. 이 과정에서 다양한 내용들을 학습하게 될 예정이며, 모든 내용들은 깃허브를 활용해 다른 사람들과 공유하고 협업하는 방식으로 진행되었습니다.
apache-kafka(카프카)
을 활용하는 학습을 진행했습니다.topic(토픽 == 테이블)
을 생성하고location.csv
파일로부터 데이터를 받아KSQLAPI
를 통해 해당 토픽에 저장하고ksql
로 데이터를 조회하는 과정을 진행했습니다.해당 토픽,
car_location_topic
은 이후 버스 도착 예측을 하는데 사용되는 학습 데이터 입니다.
Spark(스파크)
와 카프카를 통해 버스 도착 시간을 예측하는 학습을 진행했습니다.
spark_bus_ml
을 통해 도출된 RandomForest
모델입니다.car_location_topic
은 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
리눅스 터미널 환경에서 학습을 진행했으며, 터미널 환경에 익숙해지면서 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 ID
에 contributor
가 되어 다른 학생들과 함께 한 repo에서 각자 branch
를 만들고 코드를 수정하고 merge
하는 과정을 경험했습니다.
push
이후 Pull requests
에 등록하며 서로 코드를 리뷰하고 merge
까지 하는 과정을 학습할 수 있었습니다. aaingyunii.github.io -> 개인 블로그 페이지를 이전에는 깃허브에서 deploy
했지만 이번에는 firebase
를 통해 aaingyunii.web.app 링크로 배포하였습니다.
카프카, 스파크 등 다양한 빅데이터 관련 시스템들을 활용할 수 있어 매우 좋았습니다.
카프카를 통해 실시간으로 데이터를 추가 및 조회하며 해당 데이터를 사용해 스파크 모델로 예측하는 과정이 매우 흥미로웠고 이전에 배웠던 airflow와는 다른 느낌이었기 때문에 매우 만족스러운 학습이었습니다. 이외에도 많은 빅데이터 관련 시스템들이 존재하는데 이들이 때에 따라 어떻게 사용되는 지 알 수 있었고 이러한 실습 과정을 통해 더 알게 될 수 있어 좋았습니다.
카프카를 통해 실시간으로 데이터들이 "이동-계산-저장-조회" 등이 이뤄지는 것을 볼 수 있어 좋았습니다. 빅데이터 시스템 관련 수업 이전에는 웹 개발이나 데이터 분석, 코딩 학습 등 한 곳에 국한된 학습 과정들이 많았는데
이번 학습을 통해 "도커 - 리눅스(우분투) - 하둡(하이브, 피그) - 엘라스틱 서치 - 스파크 - 카프카"
등 이전과 다른 엄청 다양한 내용들을 다룰 수 있어 좋았고 특히 vscode, zeppelin, elastic
등 다양한 환경에서 이뤄지는 프로그래밍들이 서로 조화를 이루고 데이터들이 공유가 되면서 하나의 결과물로 확인할 수 있어 매우 좋았습니다.
이전부터 깃허브 업로드를 하고 있었지만 "협업 툴" 임에도 불구하고, 개인 repo 관리만 할 줄 알았고 어떻게 다른 사람들과 사용하는 지 몰랐는데 이번 강의를 통해 이에 대해 배울 수 있게 되어 매우 좋았습니다.
단지 코딩만을 위한 것이 아니라, "엔지니어" 란 이런 것을 할 줄 알아야 한다. 이런 생각이 드는 강의였고, 앞으로의 수업이 기대되었습니다. 어려운 내용이지만 열심히 잘 따라가야겠다는 생각이 먼저 들었습니다.
pdm
과 pypi.org
를 통해 파이썬 코드들을 배포하는 것을 알게 되어 매우 좋았습니다. 이를 통해 무분별한 코드 복사를 하지 않아도 될 수 있겠다라는 생각과 프로젝트에서 이를 어떻게 사용하면 될 지에 대한 고민이 생겼지만 좋은 방향이었기에 만족스러웠습니다.
전체 수업 내용에 만족했습니다. 이전 처럼 "프로그래밍 언어를 배운다거나, 빅데이터 시스템을 학습하거나 무언가 개발하거나" 이런 것이 아닌 Github
를 관리하고 사용하는 방법을 학습하지만 이 또한 매우 중요한 내용이라고 생각했었고 이렇게 다양한 활동을 하면서 배울 수 있는 경험은 흔치 않다고 생각했기 때문에 만족했습니다.
docker
환경을 통해 수정한 코드, 웹 테스트
를 진행하는 과정이 실무에서 하는 것처럼 하는 과정을 경험할 수 있었고, 이 다음 프로젝트에서 활용될 수도 있다고 생각하여 만족스러웠습니다.
학습에 사용되는 컴퓨터에서 카프카와 스파크가 동시에 구동되는 것이 힘들어 홈PC를 통해 구현할 수 밖에 없어서 아쉬웠습니다.
이전의 학습 내용들이 많이 축적되어 컴퓨터의 용량도 부족했기 때문에 발생된 것 같았고 시일 내에 포맷 과정을 치뤄야할 것 같습니다.
이후 백엔드 - 프론트 엔드 관련 실습과정이 남아있었으나 시간 부족으로 다 하지 못한 것이 아쉬웠습니다. 그래도 강의자료는 공유해주신다고 하여 이후에 확인하고 실습을 마칠 수 있을 것 같습니다.
취업 준비 -> 이력서 작성 및 마무리
복습