뛰어난 개발자를 찾는가? 오픈소스 개발자가 있다.

비개발자나 개발 경험이 있는 인사들이 착각하는 게 있다.
내가 여러 클라 만나 개발하면서 제일 답답하고 일하기 싫은 유형 중 하나인데,
바로 오픈소스 개발자를 보안에 안좋은 개발자로 본다는 것이다.
그들이 주장하는 이유는 이러하다.

오픈소스 개발자는 뭐든 오픈하기 때문에 우리 회사의 민감한 산출물도 공개할 것이다.

하지만 증거도, 물증도 없는 추측성 개소리에 불과하다.
특히 그렇다가 아니고 그럴 것이다그렇다더라 로 끝나는 게 그들이 주장하는 이유의 특징이다.

좋아. 그럼 오픈소스를 많이 공개하는 다음카카오나 쿠팡, 네이버 등에게 한번 먼저 물어보고 와라.
만약 저 이유가 사실이라면, 나는 이미 개발 일 못했을 테니까. 집에서 밤이나 까고 앉아있겠지.

자, 이제 주목.
소프트웨어는 자산인가? 그렇다. 그렇다면 소스코드도 자산인가? 당연하다.
그렇다면 이런 자산을 보호할 줄 아는 개발자를 찾는가? 그렇다면 오픈소스 경험이 있는 개발자를 추천한다.
추천하는 이유는 이렇다.

개발에 있어서 공과 사를 구분하는 능력이 뛰어나다.

그들은 아무리 자기가 만든 산출물이라도, 그 내용이 회사에 중요한 정보가 있는지, 없는지 파악할 수 있다.
물론 처음에는 이를 구분할 수 있도록 선배나 상사가 도와주지만, 자신의 능력을 뽐내려면, 보안 문제도 피할 수 없다.
하나의 사례로, 개발자라면 천국으로 유명한 회사, 제니퍼가 있다.
제니퍼는 로깅분석 솔루션을 정부에 납품하고 세계를 넘나들 정도로 기술경쟁력이 뛰어난 회사로 알려져 있다.
그들은 자체 솔루션인 제니퍼의 파기 버전을 만들면서, 그들이 만든 UI 컴포넌트를 아예 무료로 공개했다.
아니, 대체 그들은 아무리 UI 컴포넌트라도 그들의 자산일텐데 개발자가 미친거 아니냐고 생각할 텐데, 만약 그랬으면 위에서 짤랐지.
제니퍼의 핵심 기술은 따로 있다. 당연히 미치지 않고서야 공개하지 않는 건 당연한 이치.
또한, UI 컴포넌트 자체에는 회사의 보안 내용이 없는 것으로 판단했을 것이다. 그리고 이들의 소스를 공개해 버렸다.
그리고 공개하면서 사용자들의 참여를 기다린다, 개선의 여지를 회사 뿐 만 아니라 사용자에게도 기회를 부여하려 회사의 솔루션을 강화하는 취지이기도 하다.
이처럼 비즈니스적 이득이 있는 전략인 것이다. 누가 주체가 되어 오픈했는지는 내가 저기 근무 안해봐서 모르겠지만,
개발자가 개발하고 임직원들 간의 의견 수렴을 통해 충분히 공개해도 무방하기에 오픈한 것이다.
이게 주장하는 바와 다르다고 생각한다면, 당신은 여태까지 오픈소스 개발자를 보안에 안좋은 개발자로 착각해서 그렇다.
이를 경험한 개발자는, 회사에서 자신의 능력을 보여줄 때 필요한 것과 해선 안되는 것의 차이를 잘 안다.
오픈소스는 그저 개발자들의 취미생활이 아니라는 것이다. 그렇기에, 이를 경험한 개발자는 공과 사가를 구분하는 능력이 있다.
굳이 제니퍼 사례에서 제니퍼가 공개하지 말아야 할 것이 있다면, 바로 UI 컴포넌트를 어떻게 제니퍼 솔루션에 활용했냐일 것이다.

오픈소스와 상용 솔루션 사이의 좋은 조언자이다.

만약 회사 솔루션이나 제품을 만들 때, 무엇을 활용하여 생산성을 극대화 하느냐에 가장 고민이 많이 쏠려 있을 것이다.
오픈소스와 상용 솔루션, 이 둘을 잘 알고 활용한다면, 개발 생산성에 날개를 달아줄 것이다.

  • 오픈소스
    • 장점: 일부 AGPL 및 GPL 소스를 제외하면 무료로 자유롭게 사용 가능하고, 확장이 필요할 경우 수정하여 해결 가능하다.
    • 단점: 일부 소스는 사후관리를 지원하지 않으며, 일부 검증된 소스나 업체 외에는 안정성을 보장받기 힘들고, 문제 발생 시 알아서 소스를 뜯어 문제를 해결해야 할 수 있다.
  • 상용
    • 장점: 해당 개발 업체를 통해 안정성을 보장받을 수 있고, 검증되어 안정된 제품이나 솔루션 개발이 가능하다.
    • 단점: 비용이 발생하며, 해당 솔루션에 한계 발생 시 대응할 방법이 없다. (필요한 기능이 지원이 안 될 수 있다.)

오픈소스 개발자가 이를 잘 구분하는 이유는 간단하다. 자신이 다른 오픈소스를 경험하면서 사용 가능한지 미리 알고 있거나, 아니면 알 수 있도록 도와주기 때문이다.
예를 들면, UI 컴포넌트가 필요할 때, 오픈소스도 있고 상용도 있다. 만약 해당 소스가 특정 검증 기업의 지원을 받거나, 많은 커뮤니티가 활성화되어 빠른 검증이 가능하다면 주저없이 오픈소스를 선택하여 비용 절약에 도움을 줄 수 있고, 아니면 미션 크리티컬에 대응 가능성이 불투명한 경우 가능한 비용을 들여서라도 안정된 상용 솔루션을 제안할 수 있다.
만약 비용 한계가 발생하여 오픈소스를 사용해야 하는 상황이 발생 시, 적절한 용도의 오픈소스를 찾도록 도와줄 것이고,
비용이 넉넉하여 상용 써도 가능한 상황이라면, 무작정 한계 가능성이 있는 상용을 사용하는 것보다 더 나은 오픈소스를 찾아 비용 조절을 할 수 있도록 제안할 수 있다.
명심하라. 정답은 없다. 최종 결정은 결정권자가 내려야 한다. 그리고 오픈소스 개발자라고 모든 오픈소스를 섭렵할 수 있는 건 아니다.
오픈소스 양은 너무나 방대하고, 같은 기능의 오픈소스가 수십 수백 많으면 수천개가 있으며, 이 중에 적당한 솔루션을 찾는 일은 엄청 버거운 일이다.
오픈소스 개발자는 이런 상황에 숙련된 인물이지 만능은 아니기 때문에 당신도 잘 고려해야 한다는 점 잊지 말길 바란다.

자, 이 외에도 나열하고자 하는 이유는 많지만, 시간 관계상 여기까지 적겠다.
인터넷 전문기업은 오픈소스 경험자를 선호한다. 내가 말하지 않는 잠재능력과 상황판단 능력은 오픈소스에 참여한 적 없는 개발자보다는 월등히 뛰어남을 알고 있기 때문이다.
물론 실수로 개발자가 보안에 민감한 자료까지 오픈하는 경우는 있을 수 있다. 드물지만. 그 개발자를 문책하기 전에 먼저 조치를 하면 된다. 최대한 빨리.
만약 그런 개발자가 있다면, 상황에 따라 알아서 회사 방침이나 사칙에 따라 판단해라. 거기까진 내가 뭐라 할 수 없다.

개발자 여러분들도 오픈소스를 많이 경험해야 한다. 오픈소스는 그저 무료로 활용하는 도구에 불과하지 않는다. 오픈소스 개발자는 그걸 안다.
그런 상황을 인지하고 숙달하며, 회사에 필요한 기술과 솔루션을 제안받을 때, 이 능력이 빛을 발하기 때문이다.

결정적으로, 길안내를 하는 표지판을 만든다고 할 때, 오픈소스는 표지판을 만드는 방법을 공개할 뿐, 표지판 자체가 아니라는 점 명심하라.

답글 남기기

Your email address will not be published / Required fields are marked *