9월, 2023의 게시물 표시

코레일 명절 열차표 예매 대용량 트래픽 처리 경험

코레일에서 명절 열차표 예매는 전쟁이다. 예매 시작과 동시에 약 5분 동안 황금시간대 표가 예매되기 때문이다. 처음 코레일에 와서 시스템 분야를 맡으면서 본 현상은  대용량 트래픽이 발생 되었을 때 사용자 화면은 흰색으로 정지되어 있다는 것이다. 그래서 순번대기표를 적용 하자고 제안 했을 때  대부분의 결정권자들은 어차피 접속해서 시스템에 들어와도  표를 못구하는 고객들인데 꼭 돈 들여서 도입해야 하냐는 의견이었다.  어찌하여 순번대기표를 도입하기로 하였다. OOO이라는 제품이었는데 국세청 연말정산을 처리했던 업체였다. 처음에 그 업체에서 제공하는 장비수는 O대 였다. 이걸로 충분하다고 전국민 들어오는 연말정산도 널널했다는 입장이었다. 시작하자마자 죽었다. 지금은 그 장비수는 OO대로 운영중이다. 현재는 금요일 오후와 주말에 접속량이 많아서 자동으로 걸리는 수준이다. L4를 이용한 웹서버를 병렬 Scale Up 하여 최대 허용량까지 접속수준을 높이고 WAS를 통한 서비스 호출하는데 결국 데이터베이스 Update 하는 시간이 최대 능력치이다. 이 능력치를 99.9% 올리고 모니터링을 한다. 모든 수치는 빨간색으로 표시되고 CPU, Memory 등 자원을 전부 풀로 사용한다.

개발도구 경험에 대한 작은 생각

  지금까지 개발을 해오면서 경험한 내용을 공유하고자 합니다. 저의 경우는 처음 아이폰 개발을 Objective C 로 시작하였습니다. 초창기라 앱을 만들어서 올리면 유료도 꽤 다운을 받았습니다. 이후 아이폰은 Swift로 넘어가면서 같이 넘어갔고 또 그 이후로 SwiftUI 까지 개발을 하였습니다. 안드로이드 경우는 자바로 만들기 시작하였습니다. 이후 Kotlin 으로 변경 되었으며 coroutine 기능은 정말 막강하더군요. scaffold 가 너무 잘되어 있고 jetpack compose 로 넘어가니 개발 생산성이 좋더군요. 같은 앱을 서로 다른 언어로 다시 작성하는게 번거로워서 KMM(Kotlin Multiplatform Mobile) 을 사용했습니다. 비지니스 로직을 분리하니 일이 한결 쉬워 졌습니다. 하지만 화면 부분을 각각 코딩하니 다시 번거로웠어요. 이후 Flutter 를 만났습니다. scaffold 를 지원하더군요. dart 언어로 개발을 하고 안드로이드 경우는 빌드 그래들 수정을 해야 하며 아이폰의 경우 Xcode 에서 빌드와 업로드를 해야 했습니다. 서버의 경우는 처음에는 리눅스용 swift 로 Perfect 를 활용해서 서비스를 작성하였습니다. 작지만 빠른 서비스 였지만 범용성이 문제 였어요. 그리하여 노드로 변경하였습니다. 자바스크립트 정말이지 매력적인 언어입니다. 범용성이 좋아서 웬만한 모듈은 npm 에 다 존재하더군요. 현재는 Visual Code 로 Flutter 로 화면을 만들고 백엔드 서비스는 Node Koa 를 사용하고 있습니다. 기술은 계속 발전하고 사용자 편의성은 좋아집니다.