[토이프로젝트] TimeLine 2.0 개선 오픈 (임시 휴업)

IT 지식/기타지식|2020. 1. 27. 21:41

설계, 운영 모든면에서 실패

토이프로젝트 TimeLine을 만들어서 오픈했었다. 

개발의 목표는 단순하게 개발 블로그, 채용등에 대해 한번에 볼 수 있는 개발자를 위한 통합 페이지를 만드는 것이었다.

https://wedul.site/626

 

[토이 프로젝트 소개] 개발자 채용, 기술 블로그 정보를 모아주는 TimeLine

혼자 공부를 집에서 어떻게 하면 효율적일까 고민을 많이했다. 집에서 주구장창 책을 읽고 해보면 스킬이 늘까? 그렇게 해봤지만 그게 정답은 아니었다. 남들에게는 모르겠으나 나에게는 아니었다. 회사에서 하는..

wedul.site

하지만 사용하는데 생각보다 불편한 부분이 많았고 설계부분에도 현재 시스템을 고려하지 않고 만들었던게 운영에 걸림돌이 되어버렸다. 그래서 서비스를 잠정적 중단하고 2.0을 만들어서 오픈하기로 했다.

 

 

설계 실패 요인

실패 요인 1.

- 젠킨스를 실행시키면 별도의 관리포인트가 생길것으로 우려해 batch application을 계속 실행시켰던 부분이 큰 문제였다. 내 서버는 배치, db, api모두 하나의 서버에서 돌아가는데 4기가라는 부족한 메모리 상황에서 불필요한 batch application을 실행시켜서 다른 애플리케이션에서 메모리가 많이 부족하게 만들었다. 그래서 젠킨스를 작은 메모리를 할당하여 실행시키고 batch job을 세분화하여 batch application이 계속 실행되지 않게 하였다.

 

 

각 모듈을 build하는 jenkins job
rss, 스크래핑 등을 진행하는 indexing job
현재 api를 교체하는 job

 

 

실패요인 2.

실패요인1과 같이 시스템의 리소스가 많이 부족한 상황에서 api에 호출이 늘어나면 부하가 걸렸다. 그래서 이를 조금이라도 줄여보기 위해서 api에 비동기를 붙이기로 했다. 하지만 사용하고 있는 rdb에서는 비동기가 지원을 하고 있지 않은 상황에서 어떻게 해야하지 고민했는데 마침 r2dbc mysql이 정식 release했다. 굿굿 그래서 이를 사용해서 적용했다. 실제로 드라마틱하게 api 성능이 오른건 아니지만 그래도 확실히 속도가 더 빨라졌다.

 

실패요인 3.

욕심이 생겨 batch에서 긁은 데이터를 writer를 통해 업데이트 하는게 아니라 별도 kafka에 메시지를 보내서 별도 모듈에서 업데이트를 했다. ㅋㅋ 결국 그 욕심이 적은 리소스에 또 문제를 일으켰고 애플케이션이 메모리부족으로 많이 죽었다 에휴 작은 환경에서 무리한 오버스펙은 오히려 문제를 야기한다는걸 더욱 느끼게 되었다. (심지어 필요없는 레디스도 실행시켰다.)

 

실패요인 4.

UI구성을 router, component 구분없이 하나의 컴포넌트에 구분없이 추가하여 확장성 고려도 path구분도 되지 않는 상황이었다. 이를 해결하지 못해서 결국 기능추가도 공유하기도 어려웠다. 그래서 router를 추가하고 페이지를 만들고 각 page에서 사용할 공통 component를 만들어서 편하게 가져다 쓸 수 있도록 구성했다. 그 결과 이제 페이지 하나 늘려서 컴포넌트를 추가하고 빼는건 일도 아니게 되었다. 그리고 하단의 footer를 없애고 vue-sidebar-menu 라이브러리를 사용하여 보는 페이지 뷰를 늘려주었다. 

 

 

변경된 UI

기존의 UI에는 몇 가지 문제가 있었다. 

 

UI 문제 1.

데이터를 보여주는 영역은 가지고 온 제목, 로고, 데이터등을 다 보여주는데 데이터 유형이 모두 달라서 같은 유형으로 보여주기 어려웠다. 채용의 경우 큰 문제가 되지 않았지만 개발 블로그 경우에는 컨텐츠 표시 형식이 모두 달라서 보여주는 영역마다 다 깨졌다. 그래서 채용은 기존틀을 유지하고 테크는 타이틀과 컨텐츠 대표 이미지를 사용해서 리스트를 모여줬다.

좌, 테크 (기술블로그) 영역 리스팅

 

UI 문제 2.

결국 모든 데이터를 아웃링크로 보내다보니 트래픽이 많이 빠졌다. 이를 해결하려면 내부에서 화면을 보여주는게 좋다고 생각했다. 그래서 iframe을 사용해서 화면을 보여주도록 변경했다. 하지만 iframe을 막은 사이트에 경우에는 아웃링크로 가서 볼 수 있도록 아웃링크로 가는 링크를 만들어주었다.

 

 

 

UI 문제 3.

보고 싶은 업체만 보고 싶은 경우에 볼 수 있는 방법이 없었다. 그래서 이를 해결하기 위해서 상단의 리스트 바를 만들어서 자유롭게 골라서 볼 수 있도록 구성했다.

 

업체 리스팅

 

 

 

회고

2.0을 만들겠다고 생각했을 때 나 혼자서 만들기는 어렵다고 판단해서 같이 전직장에서 일했던 친구에게 부탁했다. 친구(https://lelecoder.com/)가 마침 이직을 하기 전이라 놀고 있어서 업무를 많이 진행해줬고 그래서 더 많은 컨텐츠를 가져올 수 있었고 수집된 컨텐츠 정보와 에러 정보를 slack으로 받는 기능등을 추가 받을 수 있었다. 함께하니 더 재밌고 좋았다. 나중에 같이 일할 수 있는 기회가 또 왔으면 좋겠다.

 

수집한 컨텐츠 정보를 알려주는 slack과 에러 발생시 알려주는 slack

 

 

추가된 정보와 변경된 구조 그리고 ui가 모두 맘에 든다 많은 분들이 구경와서 더 좋은 컨텐츠를 모아서 보여줄 수 있는 서비스가 되었으면 좋겠다.

해당 프로젝트는 비영리적 목적으로 해당 코드를 가지고 수정하거나 상업적 용도로 사용하는 것을 금지한다.

http://wedul.space

 

새로워진 TimeLine 2.0

 

 

아쉽게도 임시적으로 서버 운영을 멈춥니다.

댓글()
  1. jayden 2020.01.27 23:23 댓글주소  수정/삭제  댓글쓰기

    좋은 정보네요. 타임라인 사이트 자주 찾아갈게요.

  2. byrage 2020.01.28 23:36 댓글주소  수정/삭제  댓글쓰기

    좋은서비스에 쿨한회고 조합 멋지네요. 고생하셨습니다~

  3. Favicon of https://lelecoder.com BlogIcon jayden-lee 2020.01.29 16:43 신고 댓글주소  수정/삭제  댓글쓰기

    wedul은 무슨 뜻인가요?

  4. 감자아빠 2020.01.30 14:54 댓글주소  수정/삭제  댓글쓰기

    해당 채용 정보를 다시 RSS로 제공해도 좋을것 같습니다.

[토이 프로젝트 소개] 개발자 채용, 기술 블로그 정보를 모아주는 TimeLine

IT 지식/기타지식|2019. 8. 18. 21:46

혼자 공부를 집에서 어떻게 하면 효율적일까 고민을 많이했다.

집에서 주구장창 책을 읽고 해보면 스킬이 늘까? 그렇게 해봤지만 그게 정답은 아니었다. 남들에게는 모르겠으나 나에게는 아니었다. 

 

회사에서 하는 업무는 한정적이니 내가 회사에서 하지 못하지만 알고 싶고 잊고 싶지 않은 내용에 대해서 프로그램을 직접 만들면서 공부할 내용을 정리하고 싶었다.

그래서 만들게 된게 타임라인인데, 개발자 채용정보나 기술 블로그를 rss등을 사용해서 모아볼 수는 있으나 별도의 관리 툴이나 브라우저에서 확인해야해서 좀 불편했다. 그래서 그것을 한번에 볼수 있게 하는 사이트가 있으면 좋을 것 같아서 만들어봤다.

우선 주소는 http://wedul.space이다. aws에 도입하고 싶었으나 비용도 걱정되니해서 집에있는 간이 서버에 도입하였다.

화면은 잘 그릴지 몰라서 vue.js 책을 사서 간단하게 읽고 구성했다.

 

홈 / JOB / TECH로 페이지는 구성되어 있고 앞으로 로그인하여 본인이 구독하고 싶은 회사만 보는 기능을 추가할 예정이다. 그리고 자세히보기 누르면 현재는 해당 페이지로 이동하지만 timeline 내부에서 볼 수 있는 페이지를 추가할 예정이다.

 

원래는 혼자 저 정도 까지 구성하다가 크롤링 사이트를 확장하는데 혼자하기에는 조금 역부족이고 함께하고 하고자 하는 친구가 있어서 요청했다. 그래서 테크쪽과 프론트는 그 친구가 담당해주고 있다. 

저장소는 공개 되어있고 참여하고 싶으신 분들은 pull-request 보내주셔도 좋다.

https://github.com/weggdul/timeline

 

 

백엔드 구성


아무래도 나는 백엔드 개발자이다 보니 백엔드에만 사실 집중했다. 크롤링 양이 많지 않아서 별도 배치를 만들거나 큐에 쌓거나 할 필요는 없었으나 공부를 위해서 모두 구성해봤다.

우선 java8, spring-boot2.1.5로 구성되어 있고 멀티모듈로 관리하고 있다. (https://github.com/weggdul/timeline)

api 서버는 spring-batch를 통해 긁어온 데이터가 쌓여있는 mariadb에서 정보를 가져와 보여주며 중간에 redis가 위치해 있어 데이터를 캐시하고 있다.

 

batch 서버는 spring-batch에서 하루 두번 모든 JOB, tech사이트에 들러 크롤링해오고 그 정보를 kafka로 전송한다. kafka를 리스닝 하고 있다가 kafka에 데이터가 들어오면 읽어서 mariadb로 적재시키고 있다.

 

아직 미완 단계지만 다 만들어지고 나면 배포 자동 구성도 하고 seo도 달고 광고도 한번 달아봐야겠다.

공부도 확실히 되는거 같고.. 연말까지는 하고자 했던거 다 붙여보자.

댓글()
  1. 지나가는개발자 2019.08.19 14:19 댓글주소  수정/삭제  댓글쓰기

    토이프로젝트 깃 주소도 그렇고 서비스주소도 없다고뜨네요?

    • Favicon of https://wedul.site BlogIcon 위들 wedul 2019.08.19 14:26 신고 댓글주소  수정/삭제

      안녕하세요. 주소 정보는 아래와 같구요. 다시한번 확인해주세요!

      서비스 사이트 : http://wedul.space
      github : https://github.com/weggdul/timeline

  2. Favicon of https://wedul.site BlogIcon 위들 wedul 2019.10.30 15:01 신고 댓글주소  수정/삭제  댓글쓰기

    잠시 서비스 중단합니다.

  3. 나그네 2020.01.30 14:19 댓글주소  수정/삭제  댓글쓰기

    작업하시는데 얼마나 걸리셧나요

[책프협] 2019 책쓰는 개발자 책노리 방문 후기

세미나|2019. 3. 31. 17:33

작년에 어떤 출판사에서 블로그 글을 보고 책을 내보는건 어떻냐고 연락이 왔었다.

겁도 나고 내가 부족하다 생각해서 답장을 하지 못했다. ㅜㅜ 조금 후회 된다. 답장이라도 한번 해볼껄.

지금까지 공부한 내용을 남들에게 설명하고 정리하면 책도 내보고 공부도 할 수 있을것 같은데 아쉽다. 나중에 또 오면 연락을 해봐야겠다.

 

우선 그래서 개발자들이 책을 어떻게 쓰게되고 작성하는지 알아보기 위해 책쓰는 개발자 협회에서 하는 강연에 참석했다.

참석 기념품으로 교보문고에서 제공하는 달력을 받았다. 크게 기능이 있는 달력은 아닌거 같다.

 

책을 작성한 개발자분들의 대다수는 처음 책을 작성할 때 내가 부족한데 가능할까? 이런 의문을 가지고 겁도 냈다고 했다. 

그래도 하고나니 자신감도 붙고 그렇게 어렵지는 않다고했다. 단, 엄청 노가다 작업과 긴 시간이 필요하다고 했다. 

그래도 한번 해보면 재밌을 것 같다 ㅋㅋ

 

조금 더 책을 작성하고 싶은 개발자는 어떻게 해야하는지 어떻게 접촉하고 준비해야하는지에 대한 내용이 있었으면 좋겠는데 너무 전략적으로 책을 홍보하고 글쓰기를 잘하는 방법에 대해서만 알려줘서 아쉬웠다.

시간이 없어 마지막 뒤풀이는 가지 못해서 아쉬웠지만 그래도 어느정도 도움이 된 것 같다. 

언제든 책 작성 관련해서 연락이 오게 되면 작성할 수 있도록 공부 열심히 해놓자!

'세미나' 카테고리의 다른 글

[책프협] 2019 책쓰는 개발자 책노리 방문 후기  (0) 2019.03.31

댓글()

synology ds118에서 redis 설치하기 (패키지 센터가 아닌 직접 설치)

상품리뷰|2019. 2. 23. 23:18

synology에서 docker나 redis 등을 패키지 센터에서 설치하여 사용할 수 있다.


하지만 이상하게 저렴하게 나온 NAS, 그 중에서 x86 cpu를 사용하는 경우에는 패키지 센터에서 직접 redis를 설치할 수가 없다 ㅜㅜ


그래서 방법을 찾았다. 그 방법을 까먹지 않기 위해서 정리해보자.


1. DSM에서 SSH 허용

이 부분은 아주 간단하게 DSM > 설정 > 네트워크에서 SSH 허용하여 접속을 킬 수 있다. 보안상 포트는 22가 아닌 다른 번호로 바꾸고 방화벽을 설정하는 것을 추천한다. 자세한건 검색하면 엄청 나오고 간단하다.


2. redis 다운로드

redis 설치하여 운용하기 위해서 공식홈페이지에서 다운로드한다. 그리고 SFTP나 FTP 또는 단순하게 DSM에 드래그 해서 파일을 NAS에 옮겨준다. (wget으로 직접 콘솔로 받아도 무관)

https://redis.io/


3. redis 컴파일

다운 받은 redis 설치은 tar로 압축되어있다. 압축된 파일을 "tar xvfz 파일명"으로 해제한다. 그리고 이를 컴파일 해야하는데 make 명령어를 쳐도 먹질 않는다 ㅜㅜ make command not found가 발생한다 ㅜㅜ 이를 해결하기 위해서 ipkg를 설치해야 한다.


4. ipkg 설치

ipkg 설치를 위해서 패키지 센터에 설정에 들어가서 패키지 소스를 누르고 해당 주소를 추가한다.

https://www.cphub.net/

그리고 Easy Bootstrap Installer를 설치하고 ipkg gui를 설치한다. ipkg gui는 설치된 유틸리티를 유아이로 자세히 보기 위해서 사용된다. 굳이 필요없으면 안 깔아도 되고 깔게 될 경우 perl이 필요하다.



5. 필요한 명령 유틸리티 설치

1
2
3
4
/opt/bin/ipkg install autoconf
/opt/bin/ipkg install make
/opt/bin/ipkg install gcc
cs

redis 설치에 필요한 몇 개의 유틸리티를 설치한다. 


6. redis 컴파일 및 설치

다시 압축을 해제한 폴더 내부로 이동하여 make 명령어를 쳐서 컴파일을 수행한다.

컴파일이 완료되면 sudo make install 명령어를 통해 설치를 진행한다.


7. 실행

설치가 완료되면 redis-server 명령어를 입력하여 실행한다. background에서 실행시키기 위해서 &를 함께 사용한다. 실행이 되면 redis-cli를 쳐서 정상적으로 동작하는지 확인해보자.


NAS를 사용해서 개인적으로 서버를 가지고 놀아보는것도 좋다. 

기존에는 aws로 자주 놀았지만 아무래도 비용도 비싸고 실수로 비용청구가 될 가능성이 많으니 nas로 잘 놀아보자.

댓글()
  1. Favicon of https://wedul.site BlogIcon 위들 wedul 2019.02.24 01:02 신고 댓글주소  수정/삭제  댓글쓰기

    https://xpenology.com/forum/topic/4320-공유-각종-유틸리티-사용을-위한-ipkg-설치-과정

  2. Favicon of https://wedul.site BlogIcon 위들 wedul 2019.02.25 08:29 신고 댓글주소  수정/삭제  댓글쓰기

    export PATH=/opt/sbin:/opt/bin:$PATH

  3. Favicon of https://wedul.site BlogIcon 위들 wedul 2019.02.25 08:42 신고 댓글주소  수정/삭제  댓글쓰기

    https://dzone.com/articles/building-redis-from-source-on-ubuntu-server-1804

  4. 손상진 2019.07.25 00:47 댓글주소  수정/삭제  댓글쓰기

    글 도움 많이 받았습니다
    저같은 경우는 컴파일시에 libfl.so 파일을 못찾아서.. 추가적으로
    /opt/bin/ipkg install flex
    를 해서 해당 라이브러리를 설치하고 진행하니 잘 되더라고요~!

2018년을 마무리하고 2019년 시작하는 순간

생각|2018. 12. 24. 23:07

2018년이 마무리되는 시점이 오니 회사에서 다이어리와 캘린더 세트를 제공했다.


이전 직장에서도 이와 비슷한 상품들을 많이 받았어서 크게 기대감은 없었지만 그래도 박스도 세련되고 다이어리도 고급져서 좋았다.


내가 좋아하는 딱딱한 디자인에 커버 다이어리 두개와 펜 그리고 달력이 있었다.

다이어리는 마음에 든다.


2018년에 회사를 옮기고 생각하고 기대했던 부분과는 조금 다른 부분이 많아 아쉽다.

그래도 나름대로 새로운 프로젝트도 경험을 계속하고 있고 책임감도 완성도도 높아지는 것 같아서 만족스러운 부분도 있다.

내가 마음에 든 다이어리와 펜을 빼고 나머지는 책장에 꼽아두었다. 2019년이 시작되기 바로전인 지금 다이어리를 받으면서 여러 생각이 들었다.

너무 많은 생각을 앞서가며 걱정하니 머리만 아팠다. 크게 생각하지 말고 우선 내가 하는일에 집중하고 더 나은 사람이 되기 위해서 더 노력하고 공부 해야겠다.


내가 내 자신에 부끄럼없고 당당하고 자신감이 있으면 걱정도 없어질 것 같다. 

환경과 남을 탓하지말고 나부터 잘하자.


결혼이 있는 2019년에는 더 재밌는 한해를 보내보자. 아즈아

'생각' 카테고리의 다른 글

2018년을 마무리하고 2019년 시작하는 순간  (2) 2018.12.24
첫 프로젝트 오픈  (0) 2018.11.19
피아노 독학 시작  (0) 2018.10.04

댓글()
  1. 대니 2018.12.24 23:27 댓글주소  수정/삭제  댓글쓰기

    지금도 충분히 멋져

로지텍 mx master 2s 잠실 롯데월드 타워 하이마트에서 구매 후기

상품리뷰|2018. 12. 22. 20:14

회사에서 사용중인 매직 마우스2가 너무 높이가 낮아서 마우스가 하나 필요했다.


집에서 사용중인 로지텍 마우스가 있지만 그건 집에서 사용해야 하니 한 사기 위해서 하이마트로 향했다.

로지텍 마우스중 내 눈에 들어온건 mx master 2s와 mx anywhere 2s 인데 anywhere는 너무 높이가 낮았다. 그렇지만 가격은 mx master 2s가 너무 비쌌다. 129,000원 ㅎㄷㄷ


너무 비싸서 마다 하려 했지만 요새 야근이 많이 손목도 아프고 야근 수당이 나오니 야근수당으로 산다고 생각하고 구매했다.


제품박스는 되게 컸다.

앞에 뚜껑을 열면 자석으로 붙어있고 제품 상세를 확인 할 수 있다.

아주 심플하다 ㅋㅋ 

유니파잉 수신기와 마우스 그리고 충전 케이블이 있다.


이 마우스는 기존에 사용중이던 마우스들과 다르게 충전해서 사용한다.

그래서 당장은 건전지를 사지 않아도 되는 장점이 있지만 나중에 배터리 수명이 다하면 문제가 발생할 수 있다.

물론 그전에 망가지겠지만 ㅎㅎ


제품의 밑바닥은 수신장치를 바꾸는 버튼과 충전 단자 그리고 ON/OFF 스위치가 있다.


그립감도 좋고 다 괜찮다.

가격이 너무 비싸다 ㅜㅜ 그래서 아마존에서 직구하고 싶었으나 직구하면 국내에서 수리가 안되기 때문에 그냥 비싸도 국내에서 샀다.

댓글()