코로나비 개발기(코로나19정보제공)

Hynn. J·2020년 3월 6일
0
post-thumbnail

할거없는 고등학생이 방학이 늘면서 요즈음 코로나 관련 사이트들이 우후죽순 생겨나면서 나도한번 만들어보기로했다. 그냥 가만히 있는것보다 뭐라도 하는것이 낫지 않은가? 주변의 권유와 뭐라도 해야겠다는 나의 다짐하에(?) 코로나 정보 사이트의 개발을 시작했다. 개발인력이 나 하나뿐이라서 내가 프론트앤드와 백앤드 모두 봐야하기때문에 조금이라도 부담을 덜어보고자 디자인 부분은 오픈소스 템플릿인 AdminLTE를 사용하기로 했다. 당연히 템플릿을 그대로 쓸 수는 없기에 약간의 커스텀작업을 거쳤다. 이렇게 디자인은 해결..
이제 정보를 모아야하는데.. 어떻게 어떤 사이트들을 크롤링할지 몰라서 관련 사이트들을 찾아다녔다. 얼마전 광고료 전액 기부로 사람들에게 크게 알려진 코로나나우를 들어가봤는데 생각보다 확진자 정보를 보건당국 페이지보다 더 많이 그리고 더 빨리 제공하더라 그리고 실시간 현황판 또한 마찬가지로 가장 빨랐다.. 심지어 뉴스 현황판에 반영되기도 전에 반영되길래(뉴스 속보가 올라오는 동시에 1~2분내로 업데이트 되는듯) 뭔 기술을 사용했는지 암튼 굉장히 빠르게 업데이트 되더라.. 궁금해서 문의해보니 수동업데이트라고 한다... 그렇다, 그들은 HTML코드를 수정하면서 정보를 제공해왔던것이다.
당연히 나는 뉴스들을 실시간으로 주시하면서까지 수동업데이트를 할 자신이 없기에 공식적인 정보를 얻을 수 있는 곳을 찾아다녔다. 뭐 코로나에 대한 정보가 바뀌거나 추가되는건 확진자 현황이나 / 다른 뉴스 / 코로나관련 가짜뉴스양산에 대한 팩트체크 / 브리핑 뉴스 / 공식자료 / 안전안내문자 정도 있지 않을까?

지인에게 부탁을 해서 코로나 공식 사이트와 각 시도 홈피의 주소를 죄다 가져왔다. 특히 국내 코로나 간단 현황판은 가장 최신의 정보를 제공해야한다는 욕심이 있어서 코로나나우측에 허락을 받고 크롤링대상에 추가하였다.

뭐 크롤링할 사이트 대상은 어느정도 모인것 같은니 이제 사이트를 크롤링하기위해 코드를 짜보아야 할 차례니 여기서 부터 개발 방식을 설명하겠다. 크롤링 방식은 PHP의 curl로 해당 사이트를 크롤링후 Json을 반환하는 형태로 API주도형 사이트로 만들 계획이기 때문에 프론트엔드에서는 Static한 html파일 템플릿과 Static한 js로만 개발하였다. 여기에다가 조금 페이지 전환이 아쉬워서 Pjax를 이용하여 통신량을 줄이고 시각적으로 로딩효과를 주기위해 NProgress 라이브러리를 사용하였다.

크롤러를 어찌어찌 다 만들고 Box 만들고 JS로 API를 불러왔더니 꽤나 그럴듯한 사이트가 만들어졌다.

그날 저녁, 그럴듯한 사이트를 보면서 흡족해하며 잠자리에 들고 다음날 점심, 호스팅사에서 연락이 왔더군요... "한국인터넷진흥원에서 사이트에서 자신들의 사이버대피소 산하에 있는 코로나나우에 대한 DDOS공격이 의심되어 확인바란다" 라고 주의해달라더군요. 크롤링 부분에서 실수가 있었습니다. 요청시마다 한번씩 크롤링하게 짜놔서 페이지를 요청할때마다 다수의 페이지를 동시에 크롤링한다는겁니다... 어짜피 저하나 쓰는거 같았는데 페이지를 생각보다 많은 사람들이 방문하더군요. 급하게 API 백엔드를 내리고 curl_multi로 묶어서 일정시간마다 크론 돌려서 캐싱을 하게 바꿨습니다.

욕심 더 내서 API제공도 해보려고 했는데 귀차니즘때문에 미루고 있네요ㅠㅠ.

이상 저의 볼거없는 웹사이트 개발기였습니다.
여기까지 읽어주신분들 정말로 감사합니다!
https://coronavi.info/

0개의 댓글