11주차에서는 API개발과 대시보드에 관하여 학습을 하였고, 12주차는 Section3 Project를 진행하였다.
11주차와 이전 주차에서 학습한 내용들을 바탕으로 웹 서비스를 만드는 Project를 진행하였고, 전반적인 데이터 엔지니어링을 학습하는 것이 목표였다.
11주차
11주차에서는 Docker, Flask, 대시보드, 배포, 시간, 부호화에 관하여 학습을 하였다.
말로만 듣던 Docker를 직접사용해 보았고, 조금이나마 Docker에 관하여 이해할 수 있었다. 하지만 Docker 자체를 또 학습해야하는 시간이 필요하는 생각이 들었다. Docker 이미지, 컨테이너, 볼륨 등 다양하고 확장성이 높은 기능들이 있었지만, 이번에 배운것은 주로 이미지와 컨테이너에 관하여 배웠고, 그것을 사용해볼 수 있었다.
Flask를 통하여 간단한 웹서비스를 구현하는 방법을 학습을 하였다.
Flask를 다루기 위해서는 기본적으로 약간의 HTML, CSS 지식이 필요했고, 또한 파이썬 지식이 선수되어야만 한다.
직관적이고 단순한 방법으로 Flask를 다루게 되는데, 여러 웹 사이트를 보면서 클론코딩으로 학습이 진행되어도 많은 배움을 얻을 수 있을 것이다. 또한 단순한 프론트엔드뿐만 아니라 이전에 배운 데이터베이스를 이용하여 더 높은 차원의 웹 사이트를 구축할 수 있다는 생각이 들었다.
다음은 배포인데 배포는 단순하게 외부에서 나의 어플리케이션을 볼 수 있도록 공개하는 것이라고 이해해도 좋다. Heroku 서비스를 통한 배포를 배웠고 이와 비교해서 AWS에 대해서도 들었다. AWS같은 경우에는 정말 많은 기업에서 사용하고, Docker 처럼 AWS 자체에 관하여 학습을 진행해야 AWS의 여러 좋은 기능들을 사용할 수 있다고 한다.
Heroku를 통하여 배포하는 것은 Procfile, requirements.txt 등 몇가지 설정들이 필요하다. 환경변수라는 키워드가 자주 등장하였지만 환경변수를 제대로 학습하지 못한 것 같아 아쉬움이 남는다.
메타베이스를 통하여 쉽게 대시보드를 만들 수 있었는데, 웹서핑을 통하여 알아본 대시보드와 내가 만든 대시보드는 조금 많이 달랐다. 대시보드를 어떻게 하면 사용자와의 상호작용을 더 좋게, 디자인적으로 매력적으로 보이게 할지는 더 많은 자료를 보고 학습을 해야한다.
시간과 부호화는 Section3의 공식적인 학습자료로는 마지막이었다.
데이터베이스에 주기적으로 데이터를 업데이트하는 행위를 할 때 사용하는 스케줄링, flask와 같은 웹서비스에서 학습한 머신러닝 모델을 사용하기 위한 부호화 방법인 피클링에 관하여 학습을 하였다. 스케줄링을 활용한 프로젝트는 진행하지 못했지만, 데이터 수집을 자동화하는 관점에서 보았을 때 무엇보다 필요한 기능일 것이다. 또한 내가 만든 머신러닝 모델의 용량을 줄여 다른 프로젝트 혹은 팀원에게 전달할 때 피클링을 통하여 전달할 수 있을 것이다. 하지만 피클링 자체가 보안에 있어 허술한 점이 있기 때문에 신뢰할 수 있는 출처, 사용자가 아니면 사용하지 않는 것을 추천한다.
12주차(프로젝트)
프로젝트에는 내가 생각했던 프로젝트를 시각화하여 구현까지 만들어 보는 작업을 진행했다. 다른 분들의 프로젝트와 비교했을 때 더 완성도 있게 하지 못했다는 것이 아쉬움으로 남아있다. 하지만 데이터 엔지니어링에 전반적인 흐름을 이해할 수 있었고, 무엇보다 프로그래밍을 통하여 하나의 서비스를 구현했다는 점이 기억에 많이 남을 것이다. 또한 데이터베이스를 활용할 수 있었다는 점에서 다른 프로젝트를 진행 할 때도 사용해 볼 수 있겠다는 자신감을 가지게 되었다.
데이터 분석을 하는데 시간을 많이 소모하기 보다는 서비스를 구축하는 시간이 더 많이 들었지만, 프로그래밍 자체에 몰입할 수 있는 시간이었다. 프로그래밍을 하면 할수록 고려해야할 조건들이 많아져, 어려움을 겪었지만 결론적으로는 그것도 하나의 성장이라고 생각한다.
데이터 엔지니어링 파트를 학습하면서 데이터분석, 데이터 사이언티스트와는 결이 많이 다르다는 느낌을 받았다.
더욱 개발자스러웠고, 컴퓨터 기초 지식이 많이 부족하다는 것을 느꼈다. 아직 직무를 확실하게 정한 것은 아니지만 내가 과연 현업에서 이것을 제대로 활용할 수 있을까 라는 생각이 들었다.
프로젝트를 하며 느꼈던 점은 문제를 겪었을 때 어떻게 해결해 왔는지 그 문제상황을 어떻게 인지했는지가 중요했던 것 같다.
이번 프로젝트를 하며 Metabase에서 만든 대시보드를 배포하는 상황에서 문제가 발생했다.
대시보드가 내 웹사이트에 공개가 안되던 문제가 있었다.
Docker로 Metabase 이미지를 불러와 로컬 서버에서 컨테이너로 만들고 대시보드를 작성하고, 배포가 되어있는 웹사이트에 임베딩을 하게되면 외부에서 내 대시보드를 볼때 시각화가 안되는 문제점이 있었다.
대시보드를 로컬에서 만들어 공개하려는 문제점이었다. 이 문제는 포트포워딩을 하여 내 주소를 외부에 공개하여 해결 할 수 있지만 포트포워딩 기술을 사용하여 내 주소가 외부에 공개가 되면 보안에 취약한 문제가 발생하게 된다.
이 문제를 나는 Heroku에서 MetaBase 기능을 사용할 수 있도록 제공한 것이 있는데 이것을 사용하였다.
이 기능을 사용하면 Heroku app 자동으로 배포가 되면서 그 위에서 Metabase를 사용할 수 있다. 이렇게 되면 내가 직접 배포를 할 필요가 없는 것이다.
하지만 내 웹사이트에 공개가 안되던 문제 자체는 해결이 되었지만, 직접적으로 문제를 해결하지 못하고, 다른 방법을 사용한 것 같아 찝찝함과 아쉬움이 있다.
'부트캠프 회고' 카테고리의 다른 글
코드스테이츠 AIB_13 14주차 회고 (0) | 2022.07.19 |
---|---|
코드스테이츠 AIB_13 13주차 회고 (0) | 2022.07.09 |
코드스테이츠 AIB_13 9&10주차 회고 (0) | 2022.06.14 |
코드스테이츠 AIB_13 7&8주차 회고 (0) | 2022.05.25 |
코드스테이츠 AIB_13 5&6주차 회고 (0) | 2022.05.17 |