현장 납품 컴퓨터 사양에 맞게 구현을 해야함.
컴퓨터 자원은 한정적이므로, 동일한 컴퓨터 내의 로컬 서버에서 서버-클라이언트로 나눠서 구현해봤자 프로그램 최적화에 큰 의미 없다고 판단.
cpu, 메모리 자원은 한정적이지만 하드디스크 자원은 충분함.
서버
최초 로드 시 - 윈도우 프로그램에서 남긴 로그 기록을 가져온다. 가져온 로그 기록을 클라이언트에 전달해서 ui를 바로 적용할 수 있을 데이터로 파싱한다. 파싱한 데이터를 날짜, 시간별로 폴더를 구분해서 청크 단위로 이진화 데이터로 저장한다. 저장한 이진화 데이터를 읽어와서 렌더링.
업데이트 시 - 윈도우 프로그램에서 새로운 로그 기록이 생기면, 윈도우 프로그램 로그에 저장과 동시에 업데이트를 알리는 함수를 호출하여 서버로 전달. 서버에서 업데이트 신호를 받으면 윈도우 프로그램 로그의 마지막 로그 기록만 가져온다(더 좋은 방법이 있는지 찾아볼 것). 파싱하고 먼저 렌더링한 후에 위에 설명대로 청크단위 저장(최대한 실시간으로 보이게끔).
클라이언트
렌더링 방식은 가상 스크롤 라이브러리 이용하지 않고 그냥 기능 구현해서 사용. SPA형태로 대용량 데이터를 사용자가 불편함 없이 볼 수 있어야함(그렇게 느끼게 해야함). 기본적인 가상 스크롤은 구현 완료. 최신 데이터를 밑에부터 렌더링 하는 방법은?(일단 최신데이터 위에서부터 렌더링하도록 구현함)
서버에서 이진화 데이터로 저장할 때, 최신데이터를 첫번째 줄에 저장하는 방식으로 하고(노드js에서 사용 가능한 기능이라고 함), 이진화 데이터를 불러오는 방식을 스트리밍 방식으로 구현한다면 (어짜피 청크 단위로 저장하기 때문에 자연스럽게 스트리밍 방식처럼 될듯) 더욱 빠른 렌더링이 가능할 듯.
하지만 ssd도 아닌hdd가 캐시 메모리의 역할을 어느정도 성능으로 해줄 수 있을지 의문. 일단 구현해보고 테스트 해보는걸로. 프론트가 훨씬 어려운 것 같다.
'끄적 > 나만봐' 카테고리의 다른 글
윈도우 프로그램 - 웹페이지 연동4 (0) | 2024.11.26 |
---|---|
윈도우 프로그램 - 웹페이지 연동3 (0) | 2024.11.26 |
윈도우 프로그램 - 웹페이지 연동 (0) | 2024.11.22 |
안드로이드 어플 참고 (1) | 2024.11.21 |
[토이프로젝트1] 8. 구현(7) - 음식 랜덤 추천 웹/앱 (0) | 2024.10.02 |