System Compleat.

외국인 노동자

Stories

(younjin.jeong@gmail.com, 정윤진) 

일요일 아침이다. 우연한 계기로 해외의 은행에서 일을 시작한지 어느덧 5개월째에 접어든다. 지난 5개월은 무수히 많은 일들의 연속이었다. 너무나도 새로운 일의 환경, 회사는 싱가포르 로컬이지만 영국, 호주, 인도, 포르투갈, 중국, 베트남 그리고 싱가포르 사람들까지 정말 다양한 국가의 사람들과 함께 일하고 있다. 

새 직장

어떤 사람은 은행에서만 20년 넘게 일하고 있고, 또 다른 사람은 얼마전에 스타트업에서 성공을 이끌던 사람도 있으며 실리콘밸리에서 일하다가 넘어온 사람도 있다. 같이 일하는 모두가 하나하나 살펴보면 정말 명석한 사람들이다. 간혹 이렇게 명석한 사람들 사이에서 내가 일해도 되나 하는 생각이 들기도 한다. 

최근 10여년간 다녔던 회사들에서는 어떤 일을 진행하기 위해 누구에게 반드시 승인이 필요한 적은 없었다. 아마도 어떤 새로운 일을 시작하게 될때는 그것이 새로운 일이기 때문에 종전의 일들과 크게 관계가 없기 때문이기도 했으며, 보통 필요한 권한을 위임 받는데 큰 문제가 없었기 때문이기도 했으리라. 

하지만 그야말로 엔터프라이즈에서 일을 하기 시작하니 모든것이 다른 사람들과 연결되어 있다. 단순한 내부 임직원 대상 설문을 돌리는데도 설문을 위한 질문을 시스템에 등록하는 사람 따로, 그 설문 결과를 볼 수 있는 사람 따로, 그 설문에 쓰여진 질문이 맞는지를 검토해야 하는 사람들 따로, 뭐 그런 식이다. 가설을 세우고 실험을 해서 결과를 얻는다는 것이 이전 회사들에선 그토록 간단했는데 큰 회사에서는 그것마저 쉽지 않다. 

아마 설문 시스템을 담당하는 일로 그 사람을 채용했을리는 없을 것이다. 이것이 사실 더 심한 문제라고 볼 수 있는데, 각 개인은 항상 다른 어떤일로 바쁘다. 무언가 다른 일로 바빠하는 사람에게 설문의 결과가 어떻게 진행중이냐고 묻고 다시 응답을 받는 것 자체가 서로에게 딜레이가 되는 상태가 된다. 동시에 왜 그런지도 이해한다. 

우리는 서비스와 애플리케이션 구조에 있어 간결함을 유지하고 핵심 기능에 집중 해야한다는 말에 익숙하다. 지난 십년간 클라우드를 기반으로 발전해온 여러 테크 회사들의 성공사례 뒤에는 어김없이 이 내용이 뒤에 숨어 있다. 보통은 공개되지 않는 그런 내용을 넷플릭스가 블로그와 코드를 공개함으로서 마이크로서비스라는 이름으로 널리 알려지고 있다. 

하지만 우리는 문화를 이야기하는 것에 익숙하지 않다. 그리고 그 문화 없이는 저런 테크 컴패니들이 이루어낸 성과를 내는 것이 힘들것이라는 점을 배우는 중인것도 같다. 스스로 할 수 있어야 하는 일에 누군가의 승인이 필요하다는 것 자체가 시스템과 서비스간 의존성과 다르지 않다. 한줄의 코드를 바꾸기 위해 누군가에게 설명을 들어야한다는 상황 자체가 눈에 보이지 않는 의존성과 다름없다. 

의존성은 신기한 녀석이다. 애초에 무언가 분리되지 않는다면 다른 것에 의존할 필요가 없다. 그는 그의 일을 하고 나는 나의 일을 하기에 필요한 경우 그에게 무언가를 요청해야 하는 원시적인 의존성이 발생한다. 하지만 시간이 흐를 수록 이런 의존성이 많아지고 복잡해짐에 따라 하나의 변화가 힘들어지고 그 변화에 따른 위험도가 높아지기에 의존성은 점점 골치아픈것이 되어간다. 

셀프-서비스라는 말을 많이 사용한다. 어떤 일을 처리하기 위해서 필요한 것은 스스로 공급 받아서 스스로 준비하여 결과를 딜리버리하는 것을 의미한다. 셀프 서비스가 가능하기 위해서는 기능만을 딜리버리 하기위해 집중하던 것과는 다른 훈련을 필요로 한다. 내가 만든 무언가가 다른 사람에 의해 ‘셀프 서비스’의 방법으로 처리될 수 있어야 한다는 것이다. 

컨벤셔널 커밋 메세지, 브랜칭 전략, 테스트, 코드 스타일, 재 사용 가능한 코드, 설정의 분리, 코드 저장소의 읽기 권한 공개등 많은 컨셉들이 코드를 잘 쓰는 것 외에도 필요한 팀 내의, 아니 팀 외부로도의 공통 분모일 것이다. 

자연스럽게 발전한 오픈소스 생태계는 보통 이런 방식에 매우 익숙하다. 이미 구조적으로 잘 짜여진 협업의 방법과 의존성 발생으로 인한 위험을 낮추는 다양한 해법들이 존재한다. 그리고 이것은 시간이 지남에 따라 더욱 발전하고 있다고 생각한다. 

인터넷이 온전히 개발자에게 열려있어 어떠한 도구든 사용할 수 있는 상태와 그렇지 않고 인터넷에서 필수적인 것들만 내부에 별도로 준비해서 운영하고 있는 시스템 안에 있는 개발자들은 분명히 다른 상황에 처했다고 볼 수 있다. 이런 갭이 있는 상태에서 필요한 것은 무엇인가. 

예를 들어 많은 엔터프라이즈들이 내부에 별도의 넥서스를 운용한다. 이 운용의 방법은 보통 매우 매뉴얼이다. 새로운 버전의 무엇이 필요하면 어떤 승인지가 있고 이를 통과하는 프로세스가 존재하며 이 모든 것들이 지나야 무언가가 넥서스에 준비된다. 그것이 라이브러리든 패키지든 도커 이미지던간에 다르지 않다. 

사용하는 개발자의 입장에서는 일단 손봐야 할 것이 많다. 문제는 이 손봐야 할 것들이 인터넷이 열려져있는 환경에 있던 개발자라면 매우 생소하고 처음보는 것들이라는 점이다. “원래 메이븐은 그냥 돌아가는거 아니야?” 아니다. VSCODE의 플러그인을 설치할 수 없는 상태라면? 인텔리제이 아이디어에 프락시 설정을 넣어야 한다면? 

다른 사람들은 그냥 사용하는 것을 어딘가에서는 그냥 사용하지 못한다. 이것은 의존성과는 또 다른 큰 문제의 축이다. 익숙한 도구를 즉시 사용하지 못한다는 것은 꽤나 불편한일이 아닐 수 없다. 

당장 프락시와 넥서스의 엔드포인트에 대한 정보를 누군가 알려주지 않으면, 어딘가 정리되어 있지 않다면, 아니 항상 업데이트되고 있는 스크립트가 제공된다면 좀  더 편리할지도 모르겠다. 

다만 더 쉬운 방법으로 모든 개발자가 그런 설정을 할 필요가 없게 리버스 프락시 하나 제대로 준비해 주면 어떨까. 

요새는 이런 일들에 집중하고 있다. 수천명의 개발자들에게 보다 편리한 환경을 제공해 주는 일. 매일 매일이 전쟁같고, 작은 하나를 바꾸는데도 많은 사람들의 도움이 필요하다. 그리고 그 사람들에게 나를 누군가 먼저 소개해 주기 이전에는 내가 그 사람에게 메일을 보낼 명분조차 없다. 

하지만 조금씩 바뀌고 있다. 시간을 투자하고, 신뢰를 얻으면 그것이 미래의 자산이 될 것임을 믿어 의심치 않는다. 올바른 일을 하고 있다고 믿고 베짱있게 추진하다 보면 죽던지 살던지 둘중의 하나는 답이 나오겠지. 

싱가포르 생활은 한국 생활과 크게 다르지는 않다. 워낙 라이프스타일이 집회사 집회사지만, 한가지 크게 변한게 있다면 여기서는 집에서 얌전히 마신다는 것. 

COVID-19이 아니었다면 벌써 한국에 몇번 날아가서 누군가에게 징징댔겠지만, 그런 재미도 없어져버려 강제 적응 중. 

모두가 이 험난한 시국을 잘 버티어내고 결국에는 행복이 다다르길 바란다. 

의존성, 개발환경, 클라우드 아마도 난 올해 좋은 목표를 세우고 있는것 같다. 

 

(younjin.jeong@gmail.com, 정윤진)