이번 주차에도 스프링 부트 학습과 함께 웹에 대한 전반적인 내용에 대한 설명을 들으면서 크롤링한 데이터들을 조작하기도 했습니다. 또한 정규 수업 외에 실무에서 사용되는 프로그램이나, 앞으로 어떤 학습을 하면 좋고 "데이터 엔지니어" 가 목표라면, 이러한 것들을 하게 된다는 등의 내용들을 알려주셨습니다. 또한 Spring boot
만이 아닌, 파이썬 Django
패키지를 활용한 웹 구현 예시 코드도 공유해주시면서 데이터 분석 관련 모델을 웹 안에 넣은 후 POST API
로 데이터를 요청해 결과 값을 얻는 등의 구조도 보여 주어 다양한 학습을 할 수 있었습니다.
이번 주부터 슬슬 마지막에 발표하게 될 미니 팀 프로젝트 팀이 결성되었고, 수업이 끝나고 남은 자유 시간동안 주제에 관련 회의도 진행했습니다.
이번 주차 첫날(8/21,월요일)은 병원 진료 때문에 불참하게 되었지만, 강의 자료를 공유받아서 다음날 학습에 지장 없게 참여할 수 있었습니다.
스프링 부트로 게시판 만들기를 하면서 처음으로 완성된 웹 페이지를 만든 것이 좋았습니다. 또한 외부 데이터베이스(MySQL) 과 연동하여 동작 수행이 가능하게 만들어 만족하였습니다. 수업 내용 또한 계속해서 업데이트 해가는 과정이었기 때문에 재밌었고, 만족했습니다.
파이썬과 자바 언어를 병행하면서 학습할 수 있는 좋은 기회여서 좋았습니다. 하면서 부족한 점들도 많이 알게 되었고 앞으로 어떠한 공부를 해야할 지 알 수 있는 좋은 시간이었습니다. 특히 스프링 부트와 크롤링을 하는 과정을 통해 웹에 대한 지식이 조금씩 늘어나고 있고, 데이터 전처리 또한 어떻게 하면 더 간단하고 빠르게 할 수 있을 지 생각할 수 있어 만족하고 있습니다.
스프링 부트를 학습하면서 이전에는 repository
에서 직접 DB의 데이터를 받아 Controller
에서 API를 작성했는데,
이번에는 Service
객체 를 따로 만들고, 여기서 repository
의 데이터를 받아 사용했고,
interface
로 작성된 레포지토리와 달리, class
객체인 서비스 에서 원하는 동작의 함수를 구현할 수 있는 것을 알 수 있었습니다. 또한 ApiController
를 따로 작성하여 각각의 요청들(GET, POST, PATCH, DELETE
)을 확인할 수 있어 좋았습니다.
강사님이 Django
로 작성한 프로젝트를 파일을 보여주시면서
웹 서버에서 모델 학습을 하고, requests
로 웹 서버에 직접 요청하여 결과 값을 확인하는 과정을 알 수 있었습니다. 직접 만든 파일은 아니었지만 이런 식으로도 작성할 수 있다는 것을 봐서 좋았습니다.
크롤링 데이터를 전처리하는 과정과 DB에 저장, 불러와서 다시 데이터를 조작하는 과정을 보면서 pandas
를 활용해 이전에 알지 못한 방법들을 사용하는 것을 볼 수 있어 좋았습니다.
이전에 판다스 라는 것에 대해 간단히 알고만 넘어갔지만, 이렇게 데이터를 다루는데 빠르고 간편하게 하는 것을 보며 학습하면 앞으로 활용 범위가 넓을 것 같다는 생각이 들었고, 좋은 경험이었습니다.
리눅스 환경을 미리 경험한 것이 좋았습니다.
스프링 부트로 만든 웹 페이지들이 중간 중간에 동작 되지 않는 부분들이 생겨서 원활하게 이어가지 못해서 아쉬웠습니다. 다행히 전부 다 동작할 수 있게 수정되었지만 처음부터 한번에 되지 않은 게 아쉬웠습니다. "Chrome" 에서 웹 페이지들을 확인하면서 이전 캐시가 남아서 변환된 기능들이 빠르게 적용되지 않았을 수 있다는 얘기덕분에 괜찮았지만, 아쉬움은 남았었습니다.
마지막 시간에 진행한 apache-airflow
가 어떻게 쓰일 지 잘 몰라서 헷갈렸습니다. 또한 컴퓨터 내에서 잘 되지 않아 아쉬웠습니다.
Spring boot
를 활용해서 간단한 "게시판 만들기" 작업을 완료했습니다.
MySQL
과 연동하여 활성화한 웹 페이지에서 데이터의 생성, 수정, 삭제 등의 동작 수행이 가능합니다.mustache
템플릿 엔진으로 웹 페이지를 구성했습니다.pom.xml
파일을 수정하면서 스프링 부트에서 의존성의 중요성을 알 수 있었고,lombok
을 추가함으로써, @ (어노테이션)
을 통해 Getter, Setter, Constructor
등 과 같은 코드를 간단히 구현-사용이 가능한 것을 알 수 있었습니다.스프링 부트의 JPA
의 학습을 위한 프로젝트 파일을 작성하였습니다.
@(어노테이션)
을 통해 코드 작성에 유리한 이점을 알 수 있었고, 스프링 부트의 의존성의 중요성에 대해 알 수 있었습니다.추가로, 한국거래소(krx) 와 네이버 증권 사이트를 통해 과거(약 3년전) 부터 현재까지의 주식의 "시가, 고가, 저가, 종가, 거래량, 외국인소진율" 관련 데이터를 크롤링했습니다.
csv
파일로 각 종목코드별로 저장했습니다.스프링 부트에서 Service
객체를 만들어 API
를 만들고 테스트하며 학습하였습니다.
Talend API Tester
를 통해서GET, POST, PATCH, DELETE
API 를 웹에서 각각의 반응을 확인할 수 있었습니다.Service
객체를 통해 원하는 동작들을 함수로 구현할 수 있었고,ApiController
에서 활용하는 과정까지 직접 경험했습니다.따로 파이썬 파일을 통해 requests
패키지를 활용해 스프링 부트 웹 서버에 GET, POST
를 테스트했습니다.
이전 시간에 진행한 주식 데이터 크롤링
으로 저장한 .csv
파일들을 pymysql
을 통해 DB에 저장하는 것을 진행했습니다.
병렬처리
로 하는 방법에 대해 학습했습니다..csv
파일 DB 저장 과정 :glob.glob()
함수를 통해 저장한 모든 파일을 INSERT
할 수 있었습니다.윈도우 환경에서 Ubuntu 22.04
를 다운 받아 cmd 창에서 wsl
명령어를 통해 Linux
환경을 경험할 수 있었습니다.
리눅스 환경에서 apache-airflow
를 경험할 수 있었습니다.
pip install apache-airflow
airflow db init
aarflow users create --username admin --password admin --firstname Anonymous --lastname Admin --role Admin --email aaaa@aaa.com
airflow webserver &
(&를 붙임으로써, 백 그라운드에서 실행이 가능하게 됨.)airflow scheduler &
port 80번
을 사용합니다.