본문 바로가기

소프트웨어개발자의 삶/개발일기

GIS 프로젝트 시작 with learning ReactJS

나는 어쩌다보니 세월이 흘러 팀장이 되었다. 우리팀은 두가지 일을 하고 있는데 하나는 빌링이고 하나는 GIS이다. 둘의 성격은 좀 동떨어져있다. 굳이 공통점을 찾는다면 둘다 C#을 필요로한다는거? 사실 C#이 아니어도 관계가 없다. 하지만 어쩌다 보니 두 프로젝트는 C#를 기본으로 가져가는 상황이 되었다.


빌링은 별다른 프레임워크가 필요가 없다. 그냥 C# Winform으로 개발을 하면된다. WPF도 있고 웹개발도 있겠지만 어쩌다보니 Winform 개발을 기반으로 8~9년전에 개발이 되었고 최근 개편을 하는 프로젝트도 실행환경의 문제로 포팅만 계획하여 진해하였기 때문에 C# winform 기반으로 포팅이 진행이 되었다.


작년부터 6월까지 빌링 포팅을 하는 쪽을 관심을 가지고 진행을 하고 있었다. 그런 와중에도 우리팀의 GIS유지관리는 계속 일어나고 있었다. 물론 신규 GIS프로젝트는 없는 상태였다. 7월부터 GIS프로젝트가 진행이 되었다. 빌링 포팅 프로젝트의 잔여물이 애법 많이 남아있었지만 프로젝트 진행하던 우리팀의 유능한 친구가 백업을 해주는 체제로 변환하여 나는 다시 GIS프로젝트에 몰두를 하는 방향으로 진행을 잡았다.


GIS프로젝트는 처음에는 매우 당황스러운 프로젝트였다. 어디서부터 어떻게 개발이 되는지 모르니 처음에는 내가 지도를 그리는 프로그램을 개발을 해야되는지 뭘 해야되는지 도저히 알길이 없었다. 하나하나 개발을 하며 2개의 프로젝트를 진행하고나니 GIS 프로젝트가 뭔지를 이해가 조금 가는 상황이다.


GIS 개발은 지도를 그리고 보는 프로그램 관련된 개발이다. 물론 엔진을 만들 수도 있지만 의례 우리내들이 일하는 중소기업이 엔진 개발은 언감생신 꿈도 못 꿀것이고 대부분 그 엔젠을 통한 플러그인이나 웹같은 것들을 개발하는 것을 주로 한다. 물론 엔진개발을 직접하고 연구하는 회사도 많이 있으리라 본다.


GIS 엔진은 그럼 어떤 역활을 하느냐? 공간데이터(Spatial Data)를 그리는 역활이 가장 우선이라고 봐야된다. 공간데이터란 좌료를 기준으로 그려진 공간정보를 의미하는데 엔진마다 다르지만 보통 점, 선, 면을 GIS 엔진을 통해서 그릴 수 있다. 점을 그리면 하나의 위치만 있을 것이고, 선을 그리면 시작과 끝. 다시 그 끝에서 시작과 끝이 이어지다 마지막에 가서 끝나는 정보가 있을 것이다. 면은 선의 마지막 끝이 처음 시작을 만나는 데이터가 곧 면이 된다고 생각하면 된다.


이런 공간정보를 화면에서 슥슥 그리면서 좌표계라는 것을 기준으로 데이터를 만들어내는 것을 기본으로 한다. 이렇게 만들어진 데이터가 있어야 그 다음을 할 수 있다. 내가 경험한 곳에서 '메인GIS를 한다' 하면 저런 엔진이 그리는 상황에서 보조하는 프로그램을 개발하는 것을 뜻하여다.


GIS엔진입장에서는 점, 선, 면이지만 쓰는 사용자입장에서는 점, 선, 면으로 데이터가 관리되면 그냥 그림일 뿐이다. 그래서 거기에 의미를 부여한다. 이런 선은 배관이라고 하고 점은 밸브라고 하고 면은 건물이라고 하는 등의 의미를 부여한다. 그런데 그런 의미가 부여되면 점, 선, 면의 공간정보만 있어야되는 것이 아니라. 그 정보와 함께 배관, 밸, 건물의 추가적인 정보를 같이 관리를 하는데 공간정보를 제외하고 관리되는 정보를 속성정보라고 한다. 부가적인 프로그램을 개발한다는 것은 대게 이런 속성정보를 손쉽게 관리해주거나 엔진에서 일어나는 특정이벤트등을 캐치하며 편집을 편하게 할 수 있도록 하는 프로그램을 개발하는 것이다.


포토샵이 있다면 매일 같은 이미지 편집행위만 하는 경우 일일이 손으로 하던 것을 포토샵의 에드폰 프로그램을 개발할 수 있어 포토샵의 기본 메뉴 옆에 내가 만든 메뉴가 노출되면서 그걸 누르면 특수한 작업을 하던지 아니면 사용자가 그림을 그리는 행위의 이벤트를 받아서 특정 이벤트에서 어떤 처리를 공통적으로 해주는 프로그램을 짜는 것이라고 보면된다.
그렇게 만들어진 데이터를 웹을 통해서 투영을 하는 것이다. 다음지도나 네이버 지도처럼 말이다. 나도 처음에는 다음지도도 있고 네이버 지도도 있는데 지도를 자체적으로 그려야하는 곳이 그렇게 많을까? 생각하였다. 하지만 생각보다 많다고 한다. 특히 지하매설물을 기반으로 비지니스를 이어가는 분들에게는 외부에는 노출되지 말아야할 그들만의 데이터가 분명관리되어야 할 것이다. 그리고 공간위에서 일어나는 무수히 많은 비지니스들이 있다고 한다.


여튼 그겋게 GIS 프로젝트모드로 변신을 한다.

이번에는 낡은 jQuery와 오래된 웹개발을 벗어나고자 React로 개발을 하려고 한다.


지난 주와 이번 주 주말마다 보고 있는데 아직 프로젝트에 적용할 기본기는 안 다져지는것 같다. 프론트웹개발이 비약적으로 발전한 상태라 환경 구성하는 것에서 너무나 해매고 있다. 결국 node.js 책을 꺼내들고 읽으면서 npm 이 뭔지 yarn이 뭔지 배워나가고 있다.