coroutine2 Dispatcher 설정 최적화로 서버 성능 개선 및 동시 처리 속도 향상 배경큐리어슬리 회사에 LX 스쿼드에서 근무할 때, 계약사의 유저 수가 급증하면서 전체 수강 현황을 다운로드하는 데 시간이 지나치게 오래 걸리는 문제가 발생했다. 특히, 월말에는 각 계약사의 관리자가 수천 명에 달하는 수강생들의 수강 현황을 Excel 또는 CSV 파일로 다운로드해야 했고, 이 과정에 20~30분이 소요되는 경우가 발생했었다.문제파악해당 과정이 어떤 절차로 처리가되는지 정리를 하고 각 과정마다 걸리는 시간들을 책정했다. 유저목록불러오기 -> 모든 유저가 학습한 클래스의 정보 가져오기 -> 각 유저마다의 학습별 기록 가져오기이 중에서 각 유저마다의 학습별 기록 가져오기 에서의 시간이 가장 오래 걸렸다.동시처리를 위해 썼던 코루틴이 제대로 동작하지 않는 것으로 보였다. 어떤 부분이 문제일지 찾.. 2024. 11. 23. 동기 vs 비동기, Blocking vs Non Blocking (feat. Coroutine) 회사에서 이메일 프로젝트를 하던중 비동기적으로 이메일을 발송을 해야한다는 요구사항이 있었다.처음 이메일 서비스를 만들어 볼 뿐더러 동기와 비동기에 대한 개념이 온전치 못하였어서 이번업무를 하면서 공부를 해보게 되었다. sync 동기 : 순차적으로 프로세스가 실행되고 순차적으로 프로세스가 종료됨을 뜻함ex) 일반적으로 코드들을 작성하면 동기적으로 진행이된다async 비동기 : 비순차적으로 프로세스가 실행 및 종료가 됨을 뜻함. Blocking : 메인 worker 의 제어권을 block 하여 다른 worker 에게 준다.Non Blocking : 메인 worker 의 제어권을 뺏지 않고 다른 worker 도 일하게 해준다. 이렇게 위의 2가지 x 2가지 옵션으로 총 4가지의 옵션들이 만들어지게 된다. (비.. 2022. 10. 5. 이전 1 다음