일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Electron
- naver storage
- vuetifyjs
- naver storage bucket error
- bucket cors
- JavaScript
- onsenui
- sort
- CSS
- 동일 프로세스
- 동일 프로그램
- Vue
- xlsx
- error
- electron-nuxt
- bucket max-key
- vuejs
- Vuetify
- f035d
- v-text-field height
- v-select
- Android
- MySQL
- kotlin
- 프로세스 방지
- nodejs
- NUXT
- onsen-ui
- sequelize
- c#
- Today
- Total
앙큼한 개발기록
서버의 로컬화에 대한 기록(server localization) 본문
이번 회사에서 진행한 프로젝트가 electron을 이용한 프로그램 개발인데
이게 인터넷이 끊겨도 정상적으로 작동해야 된다고 한다..
여러 고심 끝에 내린 결론은 로컬 서버를 구축해 인터넷이 끊겼을 경우 request url을 로컬로 변경하고 로컬 서버에서 처리,
로컬 서버에서 처리 되다가 인터넷이 연결되면 다시 메인 서버로 변경하여 데이터를 동기화 시키는 작업을 진행하게 되었다.
프로젝트 진행 순서는 다음과 같다.
1. 메인 서버 클론
2. 메인 서버의 로컬화
- 로컬 서버는 가볍게 만든다.
- 필요없는 api, table 모두 삭제
- 각 테이블에 syncFlag, syncUid 추가 -> 동기화가 된 테이블은 syncFlag를, 인터넷이 끊긴 상태에서 로컬의 데이터를 서버로 전송하면 uid(unique id) 가 맞지 않을 수 있어 해당 uid 동기화용 칼럼 추가
- updateRecord table 추가 (데이터 업데이트 날짜 확인)
3. 로컬 서버 스케줄러 제작
- 순서
a. 초기 데이터 호출
b. 서버에 있는 데이터를 로컬에 업데이트 (30분마다, 1시간마다)
c. 인터넷 끊기면 로컬에 저장
d. 인터넷 연결 되면 서버에 있는 데이터 호출 후 로컬 데이터 서버에 저장
4. electron 프로젝트 인터넷 연결 상태 확인 및 인터넷 연결 끊기면 baseUrl 변경, 다시 연결되면 메인 서버로 바라보게 또 변경
로컬 서버에서는 sequelize 를 이용하여 database를 2개 연결 후 서버DB에 직접 접근했다.
electron의 request는 axios를 이용해 서버와 통신하며 인터넷 연결은 1분에 한번씩 확인, axios에서 'Network Error'가 터지면 바로 로컬 서버로 전송할수 있도록 error 함수 적용을 한다.
위험요소
- 메인 서버가 변경되면 로컬서버도 변경해줘야 된다. (자동 업데이트 기능을 붙여야 될거 같다.) -> s3 나 별도로 업데이트 모듈 사용해서
- 로컬 서버의 데이터와 메인 서버의 데이터의 동기화 (항상 가지고 가는 이슈)
'개발' 카테고리의 다른 글
[c#] 프로그램 자동실행 (0) | 2023.05.23 |
---|---|
[git] error: failed to push some refs to 오류 (0) | 2023.02.09 |
[git] fatal: 정방향이 불가능하므로, 중지합니다. (0) | 2022.06.16 |
[Macbook] COMMAND ControlCe 사용 (5000, 7000 port) (0) | 2022.06.05 |
<M1> docker compose 실행 (0) | 2022.06.05 |