지금껏 준비한 것으로 1차 마무리가 되었고 수정하고 싶은 부분들이 있어, 한 번 정리 후 2차 수정을 하고 있습니다.
기본적으로
1. 골프영상을 web에 user가 upload한다면
2. 이는 nest.js쪽 backend단으로 가게 되고,
3. 이를 다시 backend단에서 flask 분석 server의 해당 api로 전송하게 됩니다.
1. web에서 user_videoname.mp4를 업로드하면
2. s3에 우리가 지정한 bucketname/username/videoname.mp4로 영상을 1차적으로 저장합니다.
즉, username이라는 폴더로 각각의 user를 구분, 관리합니다.
3. 이는 backend로 영상이 저장된 url을 전송하게 되고 backend에서 분석 api server로 url을 전송하게 됩니다.
4.api server(post)에서는 해당 url을 받아서, s3를 통해 해당 url로 접근을 하고 local에 영상을 저장하였다가,
여러가지 분석 및 영상 변환을 하고
5. backend로 json return, backend에서 다시 web으로 json을 전송하여
6. web에서는 각각의 user마다 변환된 영상과 분석한 결과를 제공받을 수 있습니다.
(front쪽은 제가 개발한 것이 아니므로 skip하도록 하겠습니다)
front web
s3
DB
DB admin
flask 분석
flask 분석에는 세부적으로 너무 많은 내용이 들어있어 example을 보면,
아래와 같이 대부분의 알고리즘적인 부분으로써 설명됩니다.
추가적으로 QED 골프연습장에서 세팅을 할 때, 웹에서만 login해도 해당 사용자에게 영상이 분석돼서 저장되면 좋겠다(업로드하는 단이 따로 없어도 되게) 라고 생각하여 launch pad라는 프로그램을 추가하였습니다.
해당 lauch pad는 socketio를 통해 web과 통신하고 serial key를 프로그램마다 부여하며, 등록된 사용자에 대한 분석만 이루어지게 하였습니다. 또한 각 QED 타석마다 lauch pad가 설치되어 있으며 각각 웹사용자가 login했을 때, 프로그램도 자동으로 login하여 upload와 동일한 api call을 수행합니다. 하나의 lauch pad는 하나의 web과 통신하며 socketio room으로 구분합니다.
해당 토글을 on시키고 lauch pad 프로그램을 켜놓으면, QED 타석에서 치는 골프 영상은 계속해서 분석하고 해당 사용자 계정에 올라가며, 토글을 off하면 영상 업로드를 하지 않습니다.
lauch pad program이며, web에서 로그인하면 자동으로 로그인이 됩니다. 만약, QED 타석 PC를 통해 web을 여는 것이 아닌 태블릿을 통해 로그인할 가능성이 있으므로 태블릿에서는 QR code를 통해 자동로그인을 구현합니다.
즉, lauch pad를 통해 web login만해도 QED타석에서는 촬영 및 업로드를 직접 하지 않아도 QED camera의 권한을 가져와서 자동으로 해당 user에게 업로드합니다!
1차적으로 마무리하고 테스트를 했으며, 중요한건....대규모 사용자가 들어왔을 때 분석을 하는 쪽에 보틀넥이라던가....등등의 문제가 없는가...? 개별적인 쓰레드로 잘 돌아가는가... 얼마나 많은 사용자에 대한 처리가 가능한가 등등이 됩니다.
따라서 쓰레드방식으로 한 번에 많은 양의 api call을 해봄으로써 동시성 테스트를 진행했습니다.
50개의 쓰레드를 통해 한 번에 50명의 사용자가 영상 업로드를 했을 경우를 가정으로 api call을 수행했을 때,
로드도 걸리고 15명의 사용자에 대해 처리를 하고 죽어버리는 것을 확인했습니다. 그래서 이제 대규모 서비스로 전환할 계획이기 때문에
2차적으로는 이를 해결해서 안정성을 높일겸, flask가 느린 framework라고 생각돼서 fast api framework로 변경하고 있습니다~~~
하다보니 분석쪽 기능들이 너무 많고....추가하고 싶은 부분도 많고 해서 자료도 많아지고...
업로드 못한 자료도 많은데... 아무튼~~~~~~~ , 바쁘게 수정하는 부분들이 많아서 자료 준비 못하고 시연으로 대체한 게 몇 번 이람...
'Project > golf_AI_Serivce' 카테고리의 다른 글
[golf_AI_Service] library 정리 (0) | 2024.09.02 |
---|---|
[golf_AI_Service] 1차 마무리 성능 평가 (0) | 2024.08.05 |
[golf_AI_Service] 기능 (2) | 2023.11.26 |
[golf_AI_Service][lambda] 조금 더 자세한 내용 (0) | 2023.08.10 |
[golf_AI_Service][lambda] 전체적인 흐름 (0) | 2023.08.07 |