Study for me
공군 인편지기, 보라매인편 개발 후기 본문
개요
작년 11월쯤 입대하기 전에 훈련소에서 뉴스레터를 받을 수 있도록 프로그램을 만들고 들어갔었는데 흥미로웠던 프로젝트였다. 훈련 끝나고 매일 저녁에 뉴스 받는 게 재밌기도 했고, 시간 안 갈 때마다 어제 받은 인편 곱씹으면서 보는 게 쏠쏠했다.
훈련소도 수료하고, 자대도 배치받으니까 든 생각이 뭔가 이 프로젝트 나만 쓰기 좀 아쉽다.라는 생각이었다.
주변 친구들한테 이런 아이디어 물어보니까 다들 괜찮다고 하기도 했고, 마침 토이 프로젝트도 하나 만들고 싶어서 사지방에서 개발을 시작하게 되었다.
보라매인편..?
보라매인편
borameletter.com
보라매인 편은 공군 훈련병들에게 무료로 인터넷 편지를 보내주는 서비스다.
단순 뉴스만 보내주는 것이 아닌, 스포츠 뉴스나 주식 가격, 비트코인 가격이나 진주 날씨 같이 꼭 필요할 것 같은 정보들을 직접 선택해서 받을 수 있다.
또한, 훈련소 뉴스레터 서비스를 참고해서 만들었다. 정말 아쉽게도 해당 서비스는 육군만 지원해서 공군병도 서비스했으면 좋겠다는 마음으로 만들었다.
많고 많은 이름 중에 왜 보라매라고 지었냐면, 훈련소에서 유격 훈련하면서 "X번 보라매..!" 하던 게 기억에 남았기 때문이다 ㅋㅋ..
개발 후기
동기와 함께 개발했는데, 프런트엔드를 동기가 맡고 내가 백엔드를 맡게 되었다.
사실 프런트엔드나 백엔드나 둘 다 찍먹 수준이라 자신이 없긴 했지만, 프런트엔드를 맡아준 동기가 너무 잘해줘서 동기부여가 되긴 했다.
백엔드의 경우 파이썬의 FastAPI 라이브러리를 사용했다.
FastAPI를 선택한 이유는, 요즘 핫한 라이브러리라고 여기저기서 얘기가 많아서 한번 도전해보고 싶었다. 또 기본적으로 제공하는 기능들이 너무 편했다. Swagger도 기본으로 제공해줘서 협업하기 편한 이유도 있고 여러모로 개발하기 편했다.
API를 설계할 때는 토스의 API 설계 영상을 보면서 최대한 직관적으로 설계했는데, 생각보다 어려웠다.
애매한 부분도 상당히 많았어서 결국 대충 때려 맞춘 것들이 좀 많았다. 이런 부분들이 좀 아쉬웠었다.
기존에는 프론트엔드 개발만 해왔다보니 제대로 API를 설계한 적은 처음인데, API를 제대로 설계하려고 하니 생각보다 쉽지 않았다..
@app.get('/')
async def main():
every_news = open('../letters/every_news.txt', 'r').read()
political_news = open('../letters/political_news.txt', 'r').read()
world_news = open('../letters/world_news.txt', 'r').read()
entertain_news = open('../letters/entertain_news.txt', 'r').read()
esports_news = open('../letters/esports_news.txt', 'r').read()
korea_football = open('../letters/korea_football.txt', 'r').read()
world_football = open('../letters/world_football.txt', 'r').read()
korea_baseball = open('../letters/korea_baseball.txt', 'r').read()
world_baseball = open('../letters/world_baseball.txt', 'r').read()
today_weather = open('../letters/weather.txt', 'r').read()
covid_confirm_case = open('../letters/covid.txt', 'r').read()
total_users = session.query(User).count()
return {
'total_users': total_users,
'letters': {
'every_news': every_news,
'political_news': political_news,
'world_news': world_news,
'entertain_news': entertain_news,
'esports_news': esports_news,
'korea_football': korea_football,
'world_football': world_football,
'korea_baseball': korea_baseball,
'world_baseball': world_baseball,
'today_weather': today_weather,
'covid_confirm_case': covid_confirm_case
}
}
서비스가 뉴스를 크롤링하고 txt파일에 저장한 후, 이를 다시 읽어서 API로 보내주는 방식인데, 지금 생각해보면 굉장히 이상한 방법인것 같다.
그 당시에는 이게 가장 효율적인 방법이라고 생각했었는데, 시간이 없어서 그냥 대충 생각나는대로 짠 코드같다.
게다가 협업하는데도 불구하고 커밋 메세지를 대충 작성한게 후회되긴 한다.
이런식으로 커밋 메세지를 작성하니까, 도통 내가 어떤 부분을 수정하고 커밋한거지..? 라는 생각이 들때가 굉장히 많았다.
이런 부분들을 좀 주의해야겠다.
결론
사회에서 개발하는것과 달리 군대에서 개발해보니 생각보다 불편했다.
사지방에서 코딩해도 컴퓨터 재부팅하니 파일 사라졌었던 적도 있었고...여러 불편한 점들이 많았는데도 불구하고 프로젝트를 완성하긴 했으니까 다행이다.
홍보를 많이 하진 않았는데 어느새 벌써 사용자가 50명을 넘긴걸 보니까 다행스럽긴 하다.
참고
- 소스코드
- 하늘이 이미지는 공군에서 2019년 작성하여 공공누리 2 유형으로 개방한 공군 하늘이를 이용하였으며, 해당 저작물은 공군 공감 블로그에서 무료로 다운로드하실 수 있습니다.