회사 특성상 장비에서 TCP 통신을 통하여 AI 데이터베이스 코어 쪽과 통신을 해서 웹 백 그리고 부분을 무겁지 않은 NestJs 채택하여 구축하였다. 첫 도전이었기에 프런트 개발자로서.. 익숙함과 러닝커브가 많지 않다는 과정하에 nests를 활용하여 프런트와도 양방향 통신이 가능한 웹 소켓 연결이 수월한 NestJs 와 mysql을 사용하였다.
현 회사에 특징 중 많은 이미지 파일 이동 + 1대의 Main PC에 내부망에 있는 PC 5대의 동시 접속까지는 고려해야 하는 상황이었다..
Nginx 에 프락시를 사용하여 로드밸런스를 해주고 특정 IP를 막는 용도로 사용하고 있는 중 전체 리스트 항목을 가지고 올 때 너무 느리다는 단점이 부각 됐다.(멀티 부어 PC에서 이미지를 옮기는 와중 너무 느리다는 단점이 부각) 이점을 고치기 위하여 첫 웹백엔드 개발 쪽에 심중 있게 살펴보던 와중 Redis 서버가 눈에 들어왔다.
레디스에 장점 중에는 in-memory cache이라는 큰 장점이 있었다. 기존 nests 서버 옆은 SQL 에 하드웨어로 읽고 쓰기를 진행 했다면 Redis는 랜덤 액세스 메모리(RAM)를 사용하여 엄청난 속도를 보여줬다. 레디스 서버에서 미리 가지고 있다가 프론트가 요청을 하면 바로 보여주는 방식이라서 정말 엄청 빨라진 것을 볼 수 있었다.
윈도우 기준 설치 방법은 정말 간단하다.
사이트 접속 -&TG; MIS 설치
Releases · microsoftarchive/redid (github.com)
윈도우 기준 설치 방법은 정말 간단하다.
사이트 접속 -> msi 설치
Releases · microsoftarchive/redis (github.com)
설치 후 자동으로 서비스에 등록이 되어 컴퓨터를 재시작해도 자동으로 서버가 실행된다.
Redis의 기본포트는 6379 이다.
위에처럼 떠 있으면 제대로 실행 된거다.
너무 느렸던 list 페이지에 도입을 했더니 스냅샷에 엄청난 단축을 보여줬다.
기존은 2230ms 유휴상태를 제거해도 그 정도 걸렸다.
엄청난 단축이였다..
http 통신으로 다시 재 호출 하지 않고 호출하면서 배열을 조작하는 부분들이 다시 로직을 안 쓰다보니깐 많은 단축을 보여줬다! ㅎㅎ
백엔드 코드에서 작업은
인터셉터로 먼저 가로채서 작업을 진행 하기로 했다. 우선 인터셉터로 ts 파일을 하나 작성 해준다.
백엔드 코드에서 엔드포인트 쪽에다가 인터셉터를 주입해준다~!
업데이트 등 될경우에는
아래와 같이 레디스 명령어를 사용해서 지정해둔 키값을 삭제 해주고 업데이트 쳐준다.
업데이트 후 데이터가 남아있는 오류는 면할 수 있다.
다음에는 추가로 레디스를 활용해서 이미지 캐시 처리도 진행 해보겠다.