[넷챌린지] 4. 개발 (얼굴인식로그인)
얼굴 인식 로그인을 위해 개발했던 Facial-Auth-server 와 Face-AI-Server에 대해 이야기 해보자.
source
GuruneLee/NetCC-FacialAuthServer
GuruneLee/NetCC-FaceAIServer
FacialAuthServer
얼굴인식 로그인의 API 서버. 처리하는 요청은 signin 과 signup 두 가지가 있다.
1. /signup/face
: 사진과 메타데이터를 포함한 http 요청을 받으면, 해당 요청과 함게 온 사진을 FaceAIServer에 다시 요청하여 feature-vector 를 받아온다. feature-vector 와 메타데이터를 json 파일에 저장한다.
2. /signin/face
: 똑같이, 사진과 메타데이터를 포함한 요청을 받아 FaceAIServer를 통해 feature-vector 를 받아온다. 저장되어 있는 feature-vector 에서 이름이 같은 데이터를 가져와 vector 값을 비교한다. 값이 같으면 True 값을 응답한다.
FacialAuthServer의 API 명세
개선 노력
사진과 메타데이터를 담아 요청을 보내는 방식으로 multipart/form-data http 요청을 택하였다. 그런데, 해당 요청을 받아 파싱하는 과정에서 mime/multipart 패키지에 'File' 멤버에는 접근 가능한 메서드가 존재했지만, 'Value' 멤버에는 접근하는 메서드가 존재하지 않아 'r.MultipartForm.Value' 이렇게 직접 접근해서 사용해야했다. 따라서 Value 값에 접근해 사용할 수 있는 'MultipartFormValue' 메서드를 만들어 golang/go 깃허브에 pr 을 시도 했다.
// MultipartFormValue returns the first value for the provided form key
// MultipartFormValue calls ParseMultipartForm and ParseForm if necessary.
func (r *Request) MultipartFormValue(key string) (multipart.File, *multipart.FileHeader, error) {
if r.MultipartForm == multipartByReader {
return nil, nil, errors.New("http: multipart handled by MultipartReader")
}
if r.MultipartForm == nil {
err := r.ParseMultipartForm(defaultMaxMemory)
if err != nil {
return nil, nil, err
}
}
if r.MultipartForm != nil && r.MultipartForm.Value != nil {
if vhs := r.MultipartForm.Value[key]; len(fhs) > 0 {
v, err := vhs[0].Open()
return f, vhs[0], err
}
}
return nil, nil, ErrMissingValue
}
그런데... 그 때 관절이 찢어져 병원에 입원하게 되어서 답변을 한 달 넘게 안했는데, 다음부터는 respectful 한 방식으로 문의 해달라고 혼나고, 다른 api 를 통해 접근 가능한 사안이라며 반려됐다...
FacialAIServer
요청받은 이미지에서 feature-vector를 뽑아서 응답해주는 서버
- /get/feature
: 이미지를 포함한 요청을 받으면, 해당 이미지의 feature-vector를 응답해준다. 응답은 json 형태로 1)길이가 128인 float배열 2)메시지 3)에러메시지 를 보낸다.
굳이 서버를 두 개로 나눈 이유
이 당시, MSA 에 관심이 많았고 또 멋있어 보였다. 그래서 MSA에 대해 한창 공부하고 정리하며 나도 저렇게 구현해봐야지...! 한게 이거다. 그니깐 기술적인 의의는 없다. 지금 생각해보면 좀 이상한 짓이긴 했다.
MSA에 대해 공부한 흔적
Author And Source
이 문제에 관하여([넷챌린지] 4. 개발 (얼굴인식로그인)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@chlee4858/넷챌린지-4.-개발-얼굴인식로그인저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)