입사한 지 얼마 되지 않은 시절, 회사에는 Window Server 2008 / MsSQL / 파스칼로 이루어진 노후된 프로젝트가 있었다. 또한, 서버는 원격 접속이 되지 않고 직접 가서 배포 및 관리해야 했다. 또 또한, 회사에서 만든 프로젝트도 아니고 회사 내에서 파스칼을 할 수 있는 사람이 없었다(??? 이제 생각해 보니 어이가 없군..).
그런데 내가 그 프로젝트의 서버 이관을 맡게 되었다..!
갑자기 생각나기도 했고 또 언제 서버 이관을 할지도 모르니
아주 늦었지만, 기억을 더듬어보며 정리해놓으려고 한다.
용어 설명
- migration : 이관을 뜻한다.
- AS-IS : 현재 환경 (이관 전 환경)
- TO-BE : 구현해야할 환경 (이관 후 환경)
1. AS-IS 파악
일단 이 프로젝트는 내가 개발 / 유지보수 / 배포 중 아무것도 해본 적이 없는 프로젝트이다. 설령 내가 배포 관리했더라도 까먹었을 수도 있으니 AS-IS 파악은 필수이다.
확인해야 할 것은 다음과 같다.
- 데이터베이스
- 서버 경로( 소스파일 / 이미지, 첨부파일 등 정적 리소스 등 )
- 스케줄러 (리눅스의 경우 cron이 된다.)
- 사용 중인 서비스 패키지( 예를 들면 Microsoft Visual C++ 2008?)
서버 경로나 스케줄러는 "프로젝트를 위해 설정해 놓은 게 무엇인지"이고,
데이터베이스나 서비스 패키지는 "어떤 것을 사용하고 있는지"를 중심으로 보면 된다.
2. TO-BE 파악
당연히 구현해야할 환경을 알아야 한다. 또한, AS-IS와의 차이점을 알아야 한다.
- 데이터베이스의 경우, 인코딩 방식이나 내장함수 등이 다를 수 있다.
- 지원 종료한 패키지는 없는지 확인해야 한다.
3. 클라이언트에게 알리기
서버 이관 시 일정 기간동안 작업 및 테스트가 필요하기 때문에 서버가 종료되어야 할 수 있다. 혹은 서버가 이관됨에 따라 클라이언트 프로그램을 업데이트해야 할 수도 있을 것이다.
따라서 이런 것들은 클라이언트에게 사전에 알려야 한다.
4. 이관
일단 데이터베이스다. MsSQL의 경우, 자체 DBMS 관리도구(SSMS)에서 백업할 수 있다. (MySQL의 경우 mysqldump 명령어를 사용한다)
그 다음은 WAS 및 서버 소스이다. 버전 및 종속성에 유의하도록 하자. VCS를 관리한다면 서버 소스를 이관할 필요는 없겠지만, 이 프로젝트의 경우 최신 소스는 서버에만 적용되고 분실되었었다.. 하하..
여기서 에러가 난다면, 서비스 패키지 오류가 아닌지부터 확인해봐야 한다.
또 스케줄러를 그대로 등록한다. 이 작업은 없다면 스킵하면 된다.
마지막으로 방화벽을 확인한다. 인바운드 규칙에서 서버 포트는 열어주어야 한다.
5. 테스트
클라이언트 프로그램에서 단위 및 통합 테스트를 실시한다.
문제가 생길 경우, 다시 4번으로 돌아간다.
이제 문제가 없다면 다시 클라이언트에게 정상화를 알리면서 끝마친다.
이제 생각해 보니 어떻게 성공적으로 끝냈는지 참 모르겠다. 허허..
처음 겪은 이관이 맵고 험악한 맛이라서 그런지 다음에는 훨씬 잘할 수 있을 것 같다~!!
'경험' 카테고리의 다른 글
[React / Github Pages] BrowserRouter basename 오류 (0) | 2023.06.02 |
---|---|
[JavaScript 정규식] 태그, 태그 안 내용까지 지우기 (0) | 2023.04.27 |
Express 라우팅 - 라우트 파라미터 정규식 (0) | 2022.12.19 |
[Spring][MySql] Unknown system variable 'query_cache_size’ (0) | 2022.10.25 |
[MySql] [Oracle] 정렬 시 Null 위치 컨트롤하기 (0) | 2022.09.13 |