Development
20년도 배치표 서비스 개편 AS-IS, TO-BE & TO-DO
안녕하세요. 강산이 한번 변하고 교육과정이 두 번 변하는 동안 배치표 업무를 맡고 있는 이지환입니다. 2020학년도 배치표 개선사항에 대해 Tech-Talk에서 이야기 드렸지만 배치표 업무를 하며 고민해 왔던 것은 무엇이었고 이슈가 있었던 것은 어떤 것들이 있었는지 이야기를 해보고자 합니다. 너무 오래 전 이야기부터라 “나 때는 말이야~” 될지도 모르겠네요.
- 산출, 배치표의 고민 매년 각 대학별 모집요강을 발표하고 수능 성적을 그 대학의 모집요강 내용에 맞춰 점수를 환산해보는 것을 배치표 담당자들은 ‘산출’이라고 표현 합니다. 산출하는 방식이 비슷한 대학들도 있고 전혀 다른 공식을 사용하는 경우도 있기에 많은 종류의 산출 식이 존재합니다. 이를 구현하기 위해 선택할 수 있는 방법은 두 가지로 대학별로 산출식을 각각 만들거나 공통으로 처리할 수 있는 산출식을 만드는 것 이었습니다. 전자의 경우 전체적인 변경이 일어나면 대학별 산출식을 일일이 모두 수정, 확인해야 하는 문제가 있고 후자의 경우는 복잡도 증가와 리소스 낭비의 문제가 있겠죠. 고민 끝에 후자의 방식을 선택하게 됩니다.
- 산수는 누가해? 산출 로직에는 많은 정보 데이터가 필요하고 처리 단계가 조금 복잡하기는 하지만 결국 수식은 더하기, 빼기, 곱하기, 나누기 특이한 경우는 제곱 정도 필요합니다. DB보다는 ASP가 산수를 더 잘하니 산출식을 ASP에서 처리해야겠다고 생각하고 테스트를 했습니다. 그런데 처리 단계가 많아 여러 번 DB 커넥션을 해야 했는데 커넥션에 걸리는 시간이 너무 오래 걸려 서비스하기에는 무리였습니다. 결국 커넥션 횟수를 줄이기 위해서 산출식을 DB 프로시져로 구현하게 됩니다. 왜 쿼리로 프로그램을 짜냐고 DBA분들은 싫어하시죠.. 압니다. 미안합니다.
- 기억하고 싶지 않은 추억 공통식을 프로시져로 구현하여 첫 해에 큰 문제 없이 런칭을 했습니다. 하지만 그 다음해에는 조금씩 문제가 발생했죠. 네, 첫 해에는 배치표 이용자가 적었던 것 같습니다. 이듬해부터 사용자가 점점 늘어나기 시작하면서 DB에 과부하가 일어나 장애도 발생했었습니다. 배치표는 이투스 온라인 DB를 같이 사용하고 있었는데 본의 아니게 이투스 사이트 속도가 느려지는 일까지.. 책상 주변에 직원 분들로 병풍 쳐보셨나요? 하아.. 기억하고 싶지 않네요.
- 배치표의 숙원 추천 대학 검색 튜닝과 로직 변경으로 배치표 서비스가 안정화 될 즈음 연구소에서 “이용자들에게 지원 해볼 만한 대학을 추천해 주는 적극적인 기능을 제공하고 싶다.”라는 의견이 있었고 “저도 그랬으면 좋겠습니다!”라고 내가 할 일은 아닌 듯이 대답했지만 ‘한 명의 이용자만 해도 모든 대학의 산출식을 태워야 하는데.. DB사용량은 엄청나게 늘어날 텐데..’ 라는 걱정으로 정말 많이 고민 했었습니다. 결국 공통식을 다시 만들고 튜닝하며 많은 테스트와 시행착오를 거쳐 첫 해에 저~ 구석메뉴에 조용히 런칭하고 해마다 조금씩 앞에 배치되며 지금은 배치표의 핵심 기능으로 자리잡게 됩니다.
- 2019 환경의 변화 2019년 이투스의 모든 시스템은 AWS 클라우드 환경으로 이전하며 배치표는 Java환경으로 구성한다는 결정이 있었습니다. 개발언어 변경도 이슈지만 안정적인 운영을 위한 고민이 다시 시작 되었죠. 과거를 회상하며 문제점들을 생각해 봅니다. 오픈 후 일주일정도 접속자가 많이 몰리는데 산출할 때 DB에 부하 집중으로 느리거나 장애가 발생할지 모르니 부하를 분산해야 하지 않을까? 그리고 몇 가지 대안을 찾게 되죠. 정리해 봤습니다. 확인해보세요 “2020년도 배치표 서비스 개편 AS-IS, TO-BE & TO-DO”
진행 내용
- 발표 목적과 내용 간략 소개 배치표 개발 업무에 대한 소개보다 기술 적용을 통해 개선된 점에 중점을 두고 설명.
-
배치표 주요 기능 소개 이용 현황 및 배치표 주요 기능 설명 추천대학 기능 작동 원리 설명
- 배치표 이용자 패턴과 대응 전략 수능, 성적 발표일에 사용자 집중 현상 설명 집중으로 인해 우려되는 이슈 AWS 환경에서 대응 방법과 결과 소개
- 분산 처리 적용과 효과 기존 배치표(ASP)에서 DB에 부하가 집중되는 원인과 단점에 대한 설명 단점에 대한 보완을 하기 위해 현재 배치표 구현시 부하가 분산될 수 있도록 설계했음을 설명
- 병렬처리 적용과 속도 개선 기존 배치표(ASP)에서 지원되지 않던 병렬처리 기능을 Java환경에서 적용하여 개선된 점 소개
- To-Do 올해 개발될 배치표의 목적과 과제 더 개선해야할 사항에 대한 설명