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

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

이번 주차부터는 본격적인 "데이터 엔지니어링" 에 대한 학습이 시작되었습니다. 그전까지의 '파이썬', '자바', '머신러닝-딥러닝' 의 학습들이 기초가 되었고 이를 활용해 진행되었습니다.
이번 학습의 목표는 데이터 수집 -> DB 적재 -> Spring boot Restful API 작성 입니다. 실무에 관한 많은 이야기를 들을 수 있었고, Spark, Hadoop 등과 같이 실무에서 사용되는 빅데이터 엔지니어링의 툴을 학습하기 전에 파이썬과 자바 코드들을 활용해 직접 데이터를 모아서 DB에 저장 후 이를 웹 서버에 뿌리는 과정을 경험할 수 있는 학습이었습니다.
이번 주는 데이터 크롤링을 위주로 하여 MySQL DB에 저장했고, Spring boot를 활용해 Web API에 대한 학습을 진행했습니다.


Liked

수업을 다 들으면서 느꼈던 점은
여태 배운 내용들과 앞으로 배울 내용들에 대해 한번 정리해주시면서, 결론적으로 "데이터엔지니어링" 이 무엇이고, 어떻게 수행되는 지에 대한 설명을 해주셔서 좋았습니다. 또한 수업 내용 이외에 실무에 대한 다양한 내용들도 들을 수 있을거라고 생각되서 만족스러웠습니다.

또한 다양한 내용들에 대해 설명을 해주시면서 앞으로 공부해야할 내용들을 미리 알려주신 게 많았습니다. 개발 환경을 설정하는데 많은 시간이 소비되기도 했지만 충분히 알아야할 내용들이었고, 경험한 것이 좋았습니다.

전반적인 수업 진행은 이론적인 설명만 듣는 것이 아닌 직접 툴들을 사용하고, 코드를 작성하면서 개인 PC에서도 학습에 나온 수행 결과들을 확인할 수 있었습니다. 또한 학습하는 학생으로서 알아야할 내용들과 앞으로 겪게 될 실무에서의 상황에 맞춰서 해당 내용들을 설명해주셔서 이후의 공부 방향을 생각하고 다짐할 수 있는 계기가 되었습니다.

매일 수업이 진행되면서 크롤링하고 DB에 저장하는 과정을 반복했고, 매번 다른 방식으로 수행해서 지루하지 않고 흥미로웠습니다. 이외에도 Spring boot 학습을 이어가면서 활성화한 웹 페이지에 대해 파이썬 환경에서 API 요청을 보내면서 다양한 방식으로 학습할 수 있어 좋았습니다.

Lacked

  • 파이썬을 좀 한다고 생각했는데, 내가 작성한 코드에 비해 강사님의 코드들은 간결하면서 한 눈에 확인할 수 있어서 저의 파이썬 실력에 대해 다시 생각하게 되었습니다. 아직, 부족한 점이 많고, 특히 이전에 람다식 표현리스트 컴프리헨션 에 대해 거부감이 있었는데 오늘 학습을 통해 다시 생각하는 계기가 되었습니다.

  • 아직 미숙한 pandas 패키지 활용 능력이 아쉬웠습니다.

  • 파이썬에서 re 패키지(정규식 표현)에 대한 지식 없어, 이를 활용하는데 애를 먹었습니다.

  • 파이썬에서 .format() 표현이 미숙하여 코딩하는데 어려움을 겪었습니다. f-string 표현 방식에는 익숙했지만 format 함수를 다루지 못해 아쉬웠습니다.

Learned

  • 수업 내용이 '자바', '파이썬', 두 가지 언어를 병행하면서 진행하는 경우가 많았고 이를 위한 학습 환경(개발 환경) 설정도 중요하였습니다.

    • 파이썬 : 가상환경 설치 및 jupyter notebook 사용
      1. CLI 환경에서 python -m virtualenv venv 명령어를 통해 가상환경 설치 후
      2. venv 경로에서 "Scripts" 으로 이동 후
      3. activate 명령어를 통해 가상환경을 활성화
      4. 필요한 패키지들은 pip 로 설치.

    • 자바 : VScode 개발 편집기 사용 (파이썬도 여기에서 사용 가능)

      • VScode 내에서 Spring boot 실행을 위한 Extensions 설치
        1. Spring boot tools
        2. Spring Initializr Java Support
        3. Spring Boot Dashboard
        4. lombok
        5. Maven for java
    • 데이터베이스 : MySQL 사용

  • "데이터 엔지니어링" 이 무엇이고, 앞으로 어떠한 학습들을 할 것 인지에 대한 설명을 들었습니다.

  • '스타벅스 매장찾기' 웹 페이지에서 개발자 도구 를 통해 네트워크 통신을 확인하고, 데이터가 전송되는 수행을 찾아 파이썬에서 DataFrame 에 저장하는 과정을 학습했고, 저장된 DataFrame로컬 MySQL 에 저장하는 과정을 완료했습니다.

  • DjangoSpring boot 프레임워크에 대한 간단 소개 및 간단한 프로젝트 파일 생성 후 로컬호스트에서 해당 내용들 확인했습니다. Django 는 정규 수업 내용에 포함되어 있진 않았지만, 파이썬을 통해서 웹 프로그래밍을 할 수 있다는 점을 설명해주셨습니다.
    이에 더해서 django 프로젝트를 만들면서 생성된 sqlite3 에 대한 설명을 들을 수 있었습니다.

Spring : MVC (Model-View-Controller)
Django : MVT (Model-View-Template)
        해당 디자인 패턴에서는 MVC 에서의 View를 Template, Controller를 View 로 표현한 것.
  • "멜론 탑 100 차트 웹 페이지" 를 크롤링 한 이후 MySQL 에 저장했습니다.
  • Spring boot 를 활용해 GET 메서드와 POST 메서드를 작성하고 로컬주소에서 이를 확인하였습니다.
    이를 통해 REST API 에 대해 알아갔고, 실제 다른 사이트들의 주소 값을 보며 알 수 있었습니다.
REST (REpresentational State Transfer) API
WWW 와 같은 분산 하이퍼미디어 시스템을 이용한 자원을 주고 받는 이름을 규정하고
http 메서드(GET, POST, PUT, DELETE,...)를 통해 해당 자원의 상태를 주고 받는 것
  • 공공데이터포털 사이트에서 요청한 데이터를 XML 형식으로 받아 이를 직접 파이썬에 연결하여 데이터프레임에 담아 MySQL 에 담는 과정을 수행했습니다.

  • 이외에도 PowerToys , API Tester, VScode 등 학습하면서 필요한 여러가지의 툴들에 대한 설명과 사용법에 대해 학습할 수 있었습니다.

  • Spring boot 를 활용해 API method, POST, PUT, DELETE 에 대한 학습을 이어감.

  • 멜론 사이트에서 아이유 노래들의 "곡 정보 페이지" 에서 노래 제목, 가수, 앨범, 발매일, 장르, 가사 의 데이터를 크롤링해서 MySQL 에 저장하는 학습을 완료했습니다.

    • selenium 패키지를 이용해 webdriver 로 크롬 드라이버를 조작
    • JS 구문과 각 데이터에 해당하는 html 태그를 찾아내서 크롤링을 완료함.
  • 위와 비슷하게 간단한 삼성 주가 데이터 일부를 크롤링하는 예시도 확인했습니다.

Longed for

  • "데이터 엔지니어링" 분야에 대해 알아가게 되면서 진로 방향에 대해 생각하게 되었고 포트폴리오 작성을 신경쓸 것 입니다.

  • 학습하면서 느꼈던 코딩 실력을 올리기 위해 노력할 것 입니다.

  • 코딩 테스트 대비를 위해 알고리즘 공부를 할 예정 입니다.

  • 이후에 있을 자격증 시험을 대비할 것 입니다.

0개의 댓글