Redis 스터디 및 겜린더 서버 설계

강문혁·2022년 7월 29일
0

겜린더

목록 보기
4/13
post-thumbnail

글을 읽기 전에...

혹시나 잘못된 내용이 있으면 언제든지 댓글에 알려주시면 감사하겠습니다.
저도 항상 배우고 있는 입장이라 제가 정리한 내용이 정확한 정보가 아닐 수도 있습니다.

최근에 크롤링을 좀 하다 보니 느낀 건 겜린더를 처음 만들 때
앱을 먼저 만드는 게 아닌 핵심 기능인
백엔드부터 제대로 내실을 다지고 프론트를 만들었어야 했나라는 생각이 많이 들고 있다.

그래서 지속적으로 스터디를 하고 있는데...

드디어 어떤 걸로 백엔드를 만들어야 할지 결정했고 왜 이것으로 만들어야 하는지 이유를 설명하고 간단하게 만든 구조를 설명하고자 한다.

기존 겜린더는 어떻게 돌아가고 있는가..?

일단 기존 겜린더의 서버가 어떻게 돌아가고 있는지 설명을 해야한다.
https://github.com/typicode/json-server
겜린더는 이 json-server이라는 것으로 서버가 만들어져 있고
이를 돌리기 위한 하드웨어로 라즈베리파이4가 사용되고 있다.

이 json-server는 사실 그냥 앱 개발할 때 튜토리얼로 있길래 그냥 따라서 만들어봤었는데
이걸 그대로 출시까지 사용하고 있었다...
사실 중간에 Firebase의 Realtime Database를 사용해볼까 싶었는데
일단 제품을 빠르게 출시해보고 싶은 마음이 가장 크기도 했고
추후 트래픽이 상승하면 비용 문제가 꽤나 골치가 아플 것 같아...
일단 그대로 출시를 하기로 했었고 그 업보가 쌓여 지금 여기까지 온 것 같다...

이렇게 해도 딱히 트래픽이 없어(ㅠㅠ) 서버 유지는 매우 잘되고 있다...

그래서 어떻게 만들거니...?

이번에 공부하면서 정리한 노트인데 정확한 정보가 아닐수도 있고..
만약 잘못 된 부분이 있다면 댓글에 달아주시면 매우 감사할 것 같습니다...

일단 직접 Redis를 다운로드 받아서 구조를 봤을 때는 Redis Server / Redis CLI 로 구분이 되어있었고 서버가 열려있으면 CLI로 명령을 내리는 구조였다.

Redis는 In-Memory 방식이라 혹시나 서버가 다운되면 초기화가 되기 때문에 디스크에 있는 dump.rdb로 서버데이터를 복구하는 방식으로 사용이 가능할 것이라 생각한다.

이 방식이 기존 DB보단 훨씬 속도도 빠를 것 같고 라즈베리파이로 돌릴 것이기 때문에 일단 성능이 좋을 것 같은 Redis를 채용하게 되었다.

FastAPI는 말그대로 API의 역할을 해줄 친구인데 데이터를 불러오거나 저장할 때 이 FastAPI라는 친구를 통해 Redis 서버에 저장될 예정이다.

이 두 친구를 통해 추후 크롤링 봇을 만들고 미리 만들어 둔 API를 통해 Redis서버로 딱 차곡 차곡 정리해주는 방식으로 할 예정이다.

용산에서 알바를 하면서 같이 셀레니움도 많이 공부했고
이를 이쁘게 정리할 수 있게 해주는 Pandas 그리고
API를 전송할 수 있는 requests 등을 스스로 공부하면서
어느정도 이제 개발을 할 수 있겠다 라는 생각과 함께 이번에 설계를 마친 것 같다.

위 이미지의 사이클은 스케줄러같은 걸로 항상 자동화를 시켜 돌릴 예정이다.

이대로만 제발 순항하길 바라면서 글을 마치겠다.
그리고 이번에는 어떻게 만들었는지에 대한 과정을 이쁘게 정리해 Velog에다가 글을 올릴 생각이다...!

profile
흔들리지 말고 나만의 공부를 하자

0개의 댓글