kfooty 개발 이야기
안녕하세요, 지노든 입니다.
제가 현재 진행하고 있는 작은 토이 프로젝트를 소개 드립니다.
동기
평소에도 축구를 좋아하는데요,
요즘에는 손흥민 선수를 비롯한 해외 주요 팀에서 활약을 하면서,
조금씩 경기를 챙겨보기 시작했어요.
하지만, 경기 일정을 미리 알지 못하면, 놓치는 것은 당연하고요,
일일이 인터넷을 찾거나 내꺼 아이폰 캘린더에 직접 등록해야하는데,
은근 귀찮습니다.
한번은 구단 직접 홈페이지에서 제공하는 경기 일정 ical 구독 서비스가 있긴 하는데요,
다른 구단도 보려면 별도 ical 을 찾아서 구독해야 되죠.
저는 이게 불만 이었습니다.
왠지 덕지덕지 붙이는 느낌이라서 별로 였습니다.
간단히 캘린더에서 내가 원하는 팀을 모아서 보고 싶었어요.
설계
내꺼 아이폰 캘린더에서 간단히 보는 것을 목표로 정했습니다.
이에 따라, ical 구독 기능에 대해서 스터디를 하고 기술적으로 어떤게 필요한지 살펴봤어요.
그리고, 설계를 하는 과정에서 미리 알고 있는 중요한 사항이 있었는데요,
바로 시즌 일정이 수시로 변경한다는 사실 이었습니다.
즉, 정규 리그 이외 챔피언스리그나 기타 이유로 인해 경기 일정은 상황에 따라 변경합니다.
가장 먼저 이 점을 고려하였고,
캘린더 구독 기능을 통해 변경된 일정을 반영할 수 있도록 설계를 했습니다.
- 처음에는 팀 한개로 개발을 시작한다 (ex. 토트넘)
- 스케쥴러를 만들고, 주기적으로 확인하여, 변동된 경기 일정을 업데이트 한다
- 안정화가 어느 정도 진행되면, 팀을 추가해본다
- 국기 이모지를 이용하여 해당 리그를 보여준다: 프리미어리그-잉글랜드, 분데스리가-독일 등등..
- 공신력 있는 축구 경기일정 API 를 찾고, 무료 요금제 한도내에서 사용한다
- 파이썬으로 최대한 간단하게 구현한다
- Poetry 사용한다
평소 의존성 패키지 관리를 requirements.txt 으로 사용했었는데요,
다른 파이썬 프로젝트를 살펴보다가 Poetry 를 알게되었고,
자세히 살펴보고 싶어 이번 프로젝트를 통해 처음 사용해봤어요.
새로운 기술을 도입하여 학습할 수 있다는 점 또한 토이 프로젝트의 장점이라고 생각듭니다.
코딩
제가 채택한 축구 API 서비스 입니다.
API-Football - Restful API for Football data
Restful API for Football data +1 000 competitions, Livescore, standings, teams, odds, bookmakers, fixtures, events, line-ups, players, statistics, predictions, widgets
www.api-football.com
Flask 를 사용하여 ical 구독 앤드포인트를 만들고,
Ical, Schedule 클래스를 각각 두었습니다.
이렇게 개발한 플라스크 서버를 처음에는 개인 클라우드 컴퓨팅에 배포하여 사용하다가,
나중에는 생성된 캘린더를 netlify 에 배포하는 기능도 추가하여,
다른 사용자분들도 트래픽 걱정 없이 캘린더 구독할 수 있도록 개발 했습니다.
자세한 코드를 보고 싶다면, 아래 저장소에서 확인할 수 있어요:
https://github.com/jeesang7/kfooty
GitHub - jeesang7/kfooty: Track Korean overseas football schedules
Track Korean overseas football schedules. Contribute to jeesang7/kfooty development by creating an account on GitHub.
github.com
향후 계획
제가 간단히 사용하려고 만드는 목적으로 힘을 많이 들지 않으려고 했는데요,
그래도 이 프로젝트를 계속 발전시킨다면,
사용자분들의 피드백이나 다른 개발자들과 협업을 통해서 방향을 잡아보려 합니다.
관심있는 분들은 한번 아래 주소로 캘린더 구독해보시고,
좋은 의견이 있다면 답변 주시면 좋을 것 같습니다.
감사합니다.