시스템 엔지니어로서, 오픈소스의 시대가 도래하고 있고 "결국은 개발을 배워야 한다" 라는 생각을 가지고 있었는데, 기억은 잘 안나지만 페북 광고인가... 인터넷 광고인가 아무튼 스파르타 코딩클럽이라는 광고를 접한 적이 있다. 이때만 해도 개발 공부를 위해 패xx캠xx 에서 파이썬 강의 결제를 언제 해야하나 라고 고민하고 있던 때였다. 그런데 아무래도 온라인 강의로 여러번 쓴잔을 마신 적이 있던 터라 (개발 강의를 끝까지 끝낸 적이 없음;;;) 오프라인으로 만나서 수업한다는 스파르타 코딩클럽의 방식이 매우 크게 다가왔다.

 

개발은 정말 영어와 같은 "언어" 이다. 자주 사용해야 발전한다. 이런 측면에서 온라인 강의는 과연 내가 "자주" 공부할 수 있게 만들 수 있을까?? 라는 의문을 갖고 있었기 때문에 스파르타코딩클럽은 좀 더 나에게 효과적이라고 생각했다. 또한 왕초보도 할 수 있다는 커리큘럼도 맘에 들었고. 그래서 일반 개발 강의와 비교했을 때 나름 거금을 투자할 수 있었다.

 

7월에 시작해서 벌써 9월, 생각보다 길었지만 또 어떻게 보면 금방 지나간 기간이기도 하다. 사실 1주차 수업을 끝낸 후, "이걸 8주동안 하면... 어우야.... 쉽지 않겠는데.." 라는 생각이 들었다. 초보자가 할 수 있지만, 도전적인 마인드가 필요한 강의였다. 즉 내가 하려는 의지에 따라 난이도를 쉽게도 할 수 있고, 어렵게도 할 수 있다. 이러한 유연함이 꽤 좋았던 것 같다.

 

아무튼 다 끝났다. 내가 작업했던 내용들을 아래에 대충 기록해본다.

 

 

프로젝트 녹화 영상

해당 서비스는 현재 public에 운영중이므로 링크로 대체한다.

everysp.shop:5696

 

 

 

취지/설명

인터넷에서는 여러 특가 정보가 시시각각으로 뜨게 된다. 이러한 특가들은 네이버 쇼핑 등에서 검색할 수 있는 최저가보다 더 저렴한 경우가 많다. 또한 지속적이지 않아 특정 기간동안에만 진행하거나, 직접 검색하지 않으면 찾기 어려운 경우 등이 있다.

 

우리나라의 몇몇 상위 커뮤니티에서는 이러한 정보들을 공유하는 게시판이 있는데, 커뮤니티가 많아 일일이 다 들어가서 확인하기가 어렵다. 또한 특가다 보니 금방 종료된다. 그래서 몇몇 커뮤니티를 골라 스크래핑을 통해 한번에 특가 정보를 볼 수 있도록 만들고 싶었다.

 

 

기술설명

* 사용한 기술

- 웹페이지 구현 : html, javascript, CSS

- 데이터 스크래핑 : python, selenium, bs4

- 데이터 저장 및 컨트롤 : mariadb (mysql의 오픈소스판) 및 SQL

- 서버(+API)구축 및 자동화 : AWS, python, flask, ubuntu, bash script

 

 

* 서비스 구조

 

* 로직

1. 데이터 스크래핑 : python 스크립트를 통해 각 커뮤니티의 특가 게시판에서 데이터를 스크래핑 수행

2. 데이터 저장 : mysql에 해당 데이터들을 저장.

3. 웹페이지 뼈대 출력 : python flask에서 웹서버를 올리고 뼈대를 출력

4. 웹페이지 내용 출력 : python flask에서 ajax통신을 사용하는 API를 구축하고, 해당 API에 맞게 DB에서 데이터를 가져옴.

5. 업데이트 : 서버에서는 1번 스크래핑을 20분 주기로 수행하여 20분마다 새로운 특가정보를 지속적으로 가져옴.

 

 

결국 극복하지 못한 점과 향후 진행 예정

 

* 스크래핑 주기와 서버

주기를 10분정도로 하고 싶었으나, 1년 무료로 제공되는 AWS의 가상머신으로는 부하 때문에 어려운 듯 하다. 한 2일 돌다가 뻗는다.  20분 주기로 계속 하다가, 계속 서버가 먹통이 되길래 결국 AWS가 아닌 GCP로 서버를 바꿨다. GCP는 신규가입시 30만원어치의 크레딧을 주므로 AWS보다 더 좋은 성능이지만 더 적은 기간동안 쓸 수 있다. 일단 쓰다가 이후에는 내 도커 컨테이너로 옮길 예정이다.

  

* 썸네일 마우스오버 출력

이미지를 그냥 출력하면 사이트의 레이아웃을 깰 수 있어, 각각 항목에 마우스를 올리면 이미지를 작게 띄울 수 있도록 했다. 제목이 아닌 밑에 빈공간에 커서를 대면 썸네일이 나온다. 이는 모바일에서도 썸네일을 볼 수 있게 하기 위함이다. 전체적인 레이아웃을 깔끔하게 하기 위해 넣은 기능인데, 사용자 경험적으로는 약간 애매하다. 불편할때도 있고... 조금 개선할 필요가 보인다.

 

* 방문자 분석

구글 애널리틱스를 사용하여 누적 방문자와 경향, 검색 유입 등을 분석

 

* https 보안

현재 해당 사이트는 http로만 서비스하며, 요즘같이 위험한 세상에 http 서비스는 신뢰가 매우 낮으므로, 향후 https로 전환할 예정

 

* 모바일 모드

뷰포트로 간단하게 모바일로 볼 수는 있게 해두었지만, 조금씩 사용에 불편함이 있어 전체적으로 html을 엎어서 변경할 필요가 있어 보임.

 

* 카테고리화

아무래도 특가 정보가 너무 많아 카테고리화를 시키면 좋겠는데 (예를들어 음식, 가전제품, 미용, 건강 등..), 이렇게 하려면 결국은 제목을 가지고 카테고리를 만들 수 있도록 해야한다. 간단한 방법은 수작업이고, 자동화 하려면 뭔가.. 딥러닝이나 빅데이터 분석? 같은 게 필요한 것으로 보인다. 근데 이것은 다른 내용들보다도 훨씬 어렵고, 심지어 가능할지도 모르겠다. 하지만 개인적으로 빅데이터와 딥러닝쪽도 향후 공부할 예정이 있으므로, 공부해보고 가능하다면 구현해보고 싶다.

 

 

마치며

이러한 개발과 서비스 구축에 대해 배우면서 시스템 엔지니어로서 몰랐던 새로운 시각을 갖게 되었다. 이러한 배움은 적어도 내가 온라인에서 그냥 녹화된 강의를 듣는 것으로는 얻을 수 없는 것이라고 생각한다. 또한, 개발자 라는 직업을 하지 않은 것에 대해.. 사실 다행이라고 생각하기도 한다. 너무 힘들어!!! 하지만 느껴보지 못한 새로운 성취감을 느낄 수 있었다. 또한 자신감도 가질 수 있었다.

 

마지막으로 제일 걱정되는 게 있다. 이렇게 공부해놓고 다 끝났으니 아무것도 안해~ 이래버리면... 분명 또 다 까먹을 것이다. 그게 언어니까. 결국 조금씩이라도 지속적으로 해야 한다는 거다. 연말에 여유 될 때 또 새로운 프로젝트를 시작해보는 것도 좋을 것 같다. 아마 간단하게는 IOT쪽, 좀 심도있게 하려면 딥러닝이나 빅데이터쪽을 시도해볼 수 있으면 좋겠다.

 

생각해보니 그렇다. 결국, 한번 발을 들여놓았으면 계속 해야 까먹지 않고 계속 써먹을 수 있다는 것..ㅜㅜ 개발이란 참 어려운 길이다.

 

 

 

+ Recent posts