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

안인균·2023년 8월 27일
0
post-thumbnail

이번 주차에도 스프링 부트 학습과 함께 웹에 대한 전반적인 내용에 대한 설명을 들으면서 크롤링한 데이터들을 조작하기도 했습니다. 또한 정규 수업 외에 실무에서 사용되는 프로그램이나, 앞으로 어떤 학습을 하면 좋고 "데이터 엔지니어" 가 목표라면, 이러한 것들을 하게 된다는 등의 내용들을 알려주셨습니다. 또한 Spring boot 만이 아닌, 파이썬 Django 패키지를 활용한 웹 구현 예시 코드도 공유해주시면서 데이터 분석 관련 모델을 웹 안에 넣은 후 POST API 로 데이터를 요청해 결과 값을 얻는 등의 구조도 보여 주어 다양한 학습을 할 수 있었습니다.
이번 주부터 슬슬 마지막에 발표하게 될 미니 팀 프로젝트 팀이 결성되었고, 수업이 끝나고 남은 자유 시간동안 주제에 관련 회의도 진행했습니다.

이번 주차 첫날(8/21,월요일)은 병원 진료 때문에 불참하게 되었지만, 강의 자료를 공유받아서 다음날 학습에 지장 없게 참여할 수 있었습니다.


Liked

  • 스프링 부트로 게시판 만들기를 하면서 처음으로 완성된 웹 페이지를 만든 것이 좋았습니다. 또한 외부 데이터베이스(MySQL) 과 연동하여 동작 수행이 가능하게 만들어 만족하였습니다. 수업 내용 또한 계속해서 업데이트 해가는 과정이었기 때문에 재밌었고, 만족했습니다.

  • 파이썬과 자바 언어를 병행하면서 학습할 수 있는 좋은 기회여서 좋았습니다. 하면서 부족한 점들도 많이 알게 되었고 앞으로 어떠한 공부를 해야할 지 알 수 있는 좋은 시간이었습니다. 특히 스프링 부트와 크롤링을 하는 과정을 통해 웹에 대한 지식이 조금씩 늘어나고 있고, 데이터 전처리 또한 어떻게 하면 더 간단하고 빠르게 할 수 있을 지 생각할 수 있어 만족하고 있습니다.

  • 스프링 부트를 학습하면서 이전에는 repository 에서 직접 DB의 데이터를 받아 Controller 에서 API를 작성했는데,
    이번에는 Service 객체 를 따로 만들고, 여기서 repository 의 데이터를 받아 사용했고,
    interface 로 작성된 레포지토리와 달리, class 객체인 서비스 에서 원하는 동작의 함수를 구현할 수 있는 것을 알 수 있었습니다. 또한 ApiController 를 따로 작성하여 각각의 요청들(GET, POST, PATCH, DELETE)을 확인할 수 있어 좋았습니다.

  • 강사님이 Django 로 작성한 프로젝트를 파일을 보여주시면서
    웹 서버에서 모델 학습을 하고, requests 로 웹 서버에 직접 요청하여 결과 값을 확인하는 과정을 알 수 있었습니다. 직접 만든 파일은 아니었지만 이런 식으로도 작성할 수 있다는 것을 봐서 좋았습니다.

  • 크롤링 데이터를 전처리하는 과정과 DB에 저장, 불러와서 다시 데이터를 조작하는 과정을 보면서 pandas 를 활용해 이전에 알지 못한 방법들을 사용하는 것을 볼 수 있어 좋았습니다.
    이전에 판다스 라는 것에 대해 간단히 알고만 넘어갔지만, 이렇게 데이터를 다루는데 빠르고 간편하게 하는 것을 보며 학습하면 앞으로 활용 범위가 넓을 것 같다는 생각이 들었고, 좋은 경험이었습니다.

  • 리눅스 환경을 미리 경험한 것이 좋았습니다.

Lacked

  • 스프링 부트로 만든 웹 페이지들이 중간 중간에 동작 되지 않는 부분들이 생겨서 원활하게 이어가지 못해서 아쉬웠습니다. 다행히 전부 다 동작할 수 있게 수정되었지만 처음부터 한번에 되지 않은 게 아쉬웠습니다. "Chrome" 에서 웹 페이지들을 확인하면서 이전 캐시가 남아서 변환된 기능들이 빠르게 적용되지 않았을 수 있다는 얘기덕분에 괜찮았지만, 아쉬움은 남았었습니다.

  • 마지막 시간에 진행한 apache-airflow 가 어떻게 쓰일 지 잘 몰라서 헷갈렸습니다. 또한 컴퓨터 내에서 잘 되지 않아 아쉬웠습니다.

Learned

  • Spring boot 를 활용해서 간단한 "게시판 만들기" 작업을 완료했습니다.

    • MySQL 과 연동하여 활성화한 웹 페이지에서 데이터의 생성, 수정, 삭제 등의 동작 수행이 가능합니다.
    • mustache 템플릿 엔진으로 웹 페이지를 구성했습니다.
    • pom.xml 파일을 수정하면서 스프링 부트에서 의존성의 중요성을 알 수 있었고,
      lombok 을 추가함으로써, @ (어노테이션) 을 통해 Getter, Setter, Constructor 등 과 같은 코드를 간단히 구현-사용이 가능한 것을 알 수 있었습니다.
  • 스프링 부트의 JPA 의 학습을 위한 프로젝트 파일을 작성하였습니다.

image

  • 위의 구조와 같이 스프링 부트를 설계하고 코드를 작성하였습니다. (Entity, DTO, DAO, Service 등을 작성)
  • 코드를 작성하는 과정에서 @(어노테이션) 을 통해 코드 작성에 유리한 이점을 알 수 있었고, 스프링 부트의 의존성의 중요성에 대해 알 수 있었습니다.

  • 추가로, 한국거래소(krx) 와 네이버 증권 사이트를 통해 과거(약 3년전) 부터 현재까지의 주식의 "시가, 고가, 저가, 종가, 거래량, 외국인소진율" 관련 데이터를 크롤링했습니다.

    • 한국거래소에서 전체 주식 기본정보 데이터를 가져와 KOSPI, KOSDAQ 에 상장된 주식만 가져오도록 데이터를 전처리 한 후
    • 네이버 증권 사이트에서 데이터를 가져오는 API 를 활용해 각 데이터들을 추출하고
    • csv 파일로 각 종목코드별로 저장했습니다.
    • 위의 데이터들은 이후 스프링 부트 웹 페이지에서 활용될 예정입니다.
  • 스프링 부트에서 Service 객체를 만들어 API 를 만들고 테스트하며 학습하였습니다.

    • "ApiController" 파일을 만들고,
    • 크롬 웹 프로그램인 Talend API Tester 를 통해서
    • GET, POST, PATCH, DELETE API 를 웹에서 각각의 반응을 확인할 수 있었습니다.
    • Service 객체를 통해 원하는 동작들을 함수로 구현할 수 있었고,
    • 이를 ApiController 에서 활용하는 과정까지 직접 경험했습니다.
  • 따로 파이썬 파일을 통해 requests 패키지를 활용해 스프링 부트 웹 서버에 GET, POST 를 테스트했습니다.

  • 이전 시간에 진행한 주식 데이터 크롤링 으로 저장한 .csv 파일들을 pymysql 을 통해 DB에 저장하는 것을 진행했습니다.

    • 그전에, 크롤링 데이터들을 csv 파일로 저장하는 과정을 병렬처리 로 하는 방법에 대해 학습했습니다.
    • 보통 한 개의 프로세스만으로 진행했는데, 이 방법을 통해 컴퓨터 내의 모든 프로세스를 활용하여 이전보다 빠르게 저장할 수 있는 과정을 알게 되었습니다.

    • .csv 파일 DB 저장 과정 :
      1. 테이블 스키마를 설계하고,
      2. 컬럼에 맞춰 저장한 파일을 불러와서 알맞게 데이터들을 뽑을 수 있도록 전처리 하는 과정을 진행했습니다.
      3. glob.glob() 함수를 통해 저장한 모든 파일을 INSERT 할 수 있었습니다.

  • 윈도우 환경에서 Ubuntu 22.04 를 다운 받아 cmd 창에서 wsl 명령어를 통해 Linux 환경을 경험할 수 있었습니다.

  • 리눅스 환경에서 apache-airflow 를 경험할 수 있었습니다.

    1. pip install apache-airflow
    2. airflow db init
    3. aarflow users create --username admin --password admin --firstname Anonymous --lastname Admin --role Admin --email aaaa@aaa.com
    4. airflow webserver & (&를 붙임으로써, 백 그라운드에서 실행이 가능하게 됨.)
    5. airflow scheduler &
    • 스프링부트, 톰캣 과 마찬가지로 기본적으로 port 80번을 사용합니다.

Longed for

  • 데이터 전처리 연습 사이트와 관련 위키 독스 자료를 찾을 수 있었고, 이를 통해 학습할 예정입니다.
  • 스프링 부트 구조에 대해 자세히 알아볼 예정입니다.
  • 이전 학습의 복습을 할 예정입니다. 특히, 파이썬에서 람다식 표현 과 리스트 컴프리헨션, pandas 등을 복습할 것 입니다.
  • 다가오는 미니 팀 프로젝트 관련 주제에 대해 구상을 해보고 팀원들과 이를 해결하고 구현할 예정입니다.

0개의 댓글

관련 채용 정보