오랜만에 필자의 졸업 작품인 '스도쿠 16 퍼즐'의 기능을 추가해보았다.
원래 Firebase RTDB에 데이터를 저장했으나, 순위 조회 등 복잡한(?) 데이터를 조회하는 데 어려움이 있었다.
이로 인하여 실시간 멀티플레이 데이터를 제외한 모든 데이터를 MySQL에 저장하기로 하였고, AWS에 PHP를 설치하여 접근하는 방식으로 구현하였다.
여기에 단계별 스도쿠 기능을 추가하였고, Richard Stolk의 변형 스도쿠 시리즈 중 하나인 'No Touch Sudoku' 생성 기능도 추가하였다.
처음에는 Spring Boot를 사용하려고 하였으나, Tomcat 서버의 메모리 누수 문제로 인하여 다른 방법을 찾아보았다.
PHP를 설치하는 과정에서 Apache 서버도 함께 설치하였는데, 필자가 Bootstrap을 실습하려는 목적도 있었다.
현재까지도 '스도쿠 16 퍼즐'의 다운로드 수가 매우 적어서 캡스톤 수업 때 받은 피드백이 전부인 것은 사실이다.
앞으로 시간이 된다면 친구들에게 테스트를 부탁할 생각도 있다. Android가 아닌 아이폰을 사용하는 친구들(사용자들)을 위하여 PC버전도 수정하고 있다.
특히 단계별 스도쿠에서는 풀이 기록에 따라 등급이 주어지는데, 대학교 평점 표기 방식을 이용하여 가장 높은 A+ 등급부터 가장 낮은 등급인 D(또는 E) 등급까지 부여하였다. 만약 풀이 기록이 없다면 F 등급이 부여되며, 평균 점수에도 반영되지 않는다.
또한 등급 기준 시간을 정하기 위한 고민도 있었는데, 개발자인 필자가 직접 모든 스도쿠를 풀어볼 수 없어서 AWS EC2를 사용하였다.
비용 절약을 위해서 서버는 t4g.micro를, 데이터베이스는 db.t4g.micro를 선택하였고, 스도쿠 풀이에는 c6i.large를 선택하였다. 참고로 2022년 12월 31일까지 서버 인스턴스에는 무료 평가판이 적용되는 t4g.small을 적용할 예정이다.
특히 c6i.large 인스턴스는 시간당 US$0.096(약 140원)의 비용이 발생하는데, 항상 켜 둘 필요가 없으므로 Spot 인스턴스로 사용하려고 한다(작성 시점 기준 시간당 US$0.0315, 약 45원).
또한 비용 절감을 극대화하기 위해서 Savings Plans를 구매할 생각도 있다. t4g.micro 1일 기준으로 US$0.2496(약 360원)에서 US$0.1272(약 180원)으로 거의 반 값이라고 생각하면 된다.
작성 시점 기준으로 새로운 버전은 공개 테스트에 배포하였으며, 테스트 및 의견 수렴 등을 거쳐 정식 버전으로 출시하려고 한다.
P.S.
최근에 필자가 리눅스마스터 1급을 공부하기 시작했다. 시행 기관은 한국정보통신진흥협회이며, 국가공인 민간자격이다.
여담이지만, 필자가 4학년 2학기 때 인턴십 프로그램으로 다녔던 기업체가 있는 건물에 위치하고 있다.
아무것도 모른 채로 기출문제를 풀어보았는데 50점대였다. 1개월 동안 열심히 공부해야겠다.