티스토리 뷰

Situation

임베디드 프로그래머 프리랜서로 활동하고 계시는 아버지를 위해, 2020년에 만들어드린 웹 크롤러가 다음 이유들로 인해 정상작동하지 않게 되었다.

 

  1. 웹 사이트의 개편으로 인한 데이터가 크롤링 되지 않음.
  2. 자동화를 위해 AWS Lambda에 업로드 했는데, 3.7버전에 대한 지원이 끊김.

그래서 기존 버전을 업데이트 하기보다, 패키지도 업데이트 되었을테니, 다시 배워보자는 마음가짐으로 처음부터 개발하기로 결정했다.

 

기존 버전은 다음과 같은 특징으로 개발하였다.

  • AWS Lambda를 위한 함수형 프로그래밍(?)
  • Selenium + BeautifulSoup4
  • Selenium을 위한 Headless Chromium을 AWS Lambda에 업로드하여 사용
  • AWS S3에 .json파일을 업로드하고, 읽어오고 덮어쓰는 형식으로 간이 DB 구현
  • AWS Lambda에 업로드 시, 프로젝트 폴더에 패키지 파일을 전부 다운로드하고, 한꺼번에 압축한 파일을 Lambda에 업로드

그렇다. 중구난방이다.

그냥 되는게 좋은거라고 일단 돌아가면 됐지 마인드로 마구잡이로 개발했었다.

 

하지만 지금의 나는 다르다!

클린 코드 정신과, 객체지향형 프로그래밍을 사랑하는 개발자로 거듭났기 때문이다!

 

그래서 업데이트 버전은 몸으로 직접 부딪히고 겪어보며 뼈저리게 느껴본 유지보수의 어려움을 조금이라도 해결해보고자 다음과 같은 목표를 잡고 개발하게 되었다.

  • 객체지향형 프로그래밍으로 코드의 유지보수를 쉽게
  • Lambda에 업로드 시, Layer(계층)을 활용하여 불필요한 압축과정과 업로드를 없애고 바로바로 디버깅에 대응할 수 있도록
  • 기존 버전의 느린 크롤링 속도를 조금이라도 더 개선
  • 조금이라도 더 쉽게 유지보수 가능하도록 최대한 깔끔하게 개발
  • 깃허브로 처음부터 제대로 버전관리

개발 환경설정

프로젝트 개발에 앞서서 가장 먼저 해주어야 할 것은 개발환경 세팅이다.

에디터는 VScode를 사용하였고, 패키지 버전관리를 위해 virtualenvwrapper로 가상환경을 만들어서 사용했다.

# 프로젝트 폴더 생성
mkdir 프로젝트_이름

# 가상환경 패키지 설치
pip install virtualenv virtualenvwrapper

# 가상환경 생성
virtualenv --python=python3.11 가상환경이름
mkvirtualenv 가상환경이름

# 가상환경 사용
workon 가상환경이름

# 가상환경 사용해제
deactivate

다음 글에서 이어서 실제 개발과정을 좀더 자세하게 적어보도록 하겠다.

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함