자연어 처리 모델 프로젝트 중, 시스템 설계를 진행하는 과정입니다.
이 과정은 혼자서...는 아니고, 프로젝트 팀원 2명의 인원과 함께 했습니다.
시스템 설계와 관련된 서류들을 살펴보기 전에, 파일들을 잠깐 확인해보겠습니다.
이번에 사용한 IDE는 Pycharm을 사용해봤습니다.
flask와 django 를 구동할 때 유용합니다.
기본적으로 MVC 패턴을 토대로 작성합니다. 중심이 되는 기능은 일기장 작성과 회원관리에 대한 부분입니다.
클래스를 사용해서 코드를 작성하기 때문에, base.html과 header.html, index.html을 분리해서 구현합니다.
아래는 시스템 아키텍쳐를 요약한 이미지입니다.
본 서비스는 NGINX 구동방식과 WSGI 서버를 사용해서 동적인 페이지 요청을 받아들입니다.
앞으로의 구현과 배포를 사용할 모듈까지 일단 작성해보았습니다.
이제 시스템 설계서 부분을 보겠습니다.
간단하게 수정이력을 확인할 수 있도록 구성했습니다.
웹서비스를 구동할 수 있는 최소한의 요구사항도 찾아줍니다.
복잡한 API가 아니기 때문에, 기본적으로 대부분의 OS에서는 기능합니다.
간단하게 아키텍쳐를 요약하는 메시지를 남겨줬습니다.
어떤 Tool을 사용했는지, 어떻게 서비스가 구성되는지를 보여줍니다.
먼저 AI 모델링 팀과 모델 조사를 진행하여, 허깅페이스-허브라는 매우 흥미로운 모델 공유소를 찾았습니다. 이 사이트를 적극 사용하게 되었습니다. 거의 github 만큼의 생태계를 갖고 있는 nlp 모델 허브였습니다.
* 모델링 팀으로부터 여기서 Text-To-Text 모델을 서빙받았습니다.
상세 시스템은 네가지 정도로 나눠서 표현했습니다. 구분에 특별한 사유는 없고, 큰 줄기라고 생각하는 부분을 분리하면 좋을 것이라 생각했습니다.
회원관리 상세부분은 너무 소상한 정보들이 포함되어 있어서 생략하겠습니다.
다음은 사용자의 데이터가 어떻게 흐르고, 어디로 받아들여지는지 나타내는 데이터 플로우를 보겠습니다.
비회원 상태에서 회원가입을 통해 받은 정보들은 Post 요청들을 통해서 유저 DB로 전송되게 됩니다. 이때 Form 형태를 통해서 받아들이는 것이 기본이고, 이 DB는 로그인 시에도 확인하게 됩니다.
DB는 SQLAlchemy 문법을 통해 생성하게 됩니다.
이 기능도에서는 main 기능인 사용자의 일기를 요청받는 내용을 담고 있습니다.
실제 코드상에서는 데이터 전처리와 모델링을 담고 있기 때문에 더욱 복잡합니다.
시스템을 구성하는 하드웨어는 필자의 노트북이 포함되었습니다.
아래는 각 기술 스택과 버전관리 입니다.
어떤 서버 배포 관련 인터넷 강의를 듣다보니 라이브러리의 "버전관리"가 생각보다 중요한 사안이라고 하더군요.
특정한 시스템이나 서버를 올리다보면 업그레이드가 된 패키지 라이브러리가 있고, 다른 연결된 모듈을 신경쓰지 않고 업그레이드가 안된 패키지 라이브러리도 존재한다고 합니다.
때문에 해당 시점에서 사용한 버전을 적시해 두는 것이 꼭 필요하다고 할 수 있겠습니다.
이상으로 본 포스팅을 마칩니다.
'필기정리 > 프로젝트 회고' 카테고리의 다른 글
[프로젝트 준비] 자연어 분석 프로젝트 준비과정_2 (0) | 2023.05.18 |
---|---|
[프로젝트 준비] 자연어 분석 프로젝트 준비과정_1 (0) | 2023.04.02 |