brunch

매거진 CONTENTS

You can make anything
by writing

C.S.Lewis

블록체인 개발자는 어떤 일을 할까

[스플X코드스테이츠]


안녕하세요, 코드스테이츠 블록체인 엔지니어링 부트캠프입니다.

.

혹시 블록체인 개발자로 취업하고도 블록체인 개발자가 무슨 일을 어떻게 하는지 설명하지 못하지는 않으시나요? 블록체인 개념에 대해 이해가 깊지 않아 타인에게 설명하는 것에 어려움이 있으시나요? 이러한 이유로 블록체인 개발자로 취업하고도 주변에 알리기가 망설여 지시나요?

.

많은 사람들이 블록체인 개발자를 꿈꾸며 블록체인 엔지니어링 부트캠프에 합류합니다. 블록체인 개발자가 하는 일을 제대로 이해하게 된다면, 앞으로 블록체인 개발자로서 어떤 길을 걷게 될 것인지 로드맵을 그리게 될 것입니다. 하지만 과연 블록체인 개발자가 되었다고 기존의 개발자와는 전혀 다른 길로 가게 될 것이며, 이 길이 특별한 길일까요? 그렇지 않습니다. 우리는 그저 블록체인 산업에 많은 관심을 가지고 있으며, 활동 영역이 블록체인 업계인 개발자 일뿐입니다.


출처 : https://dev.to/envoy_/blockchain-app-developer-roadmap-31p5


이 그림은 블록체인 개발자를 위한 로드맵입니다. 이를 통해 블록체인 개발자는 기존의 개발 스택에서 내가 관심이 있는 부분을 추가적으로 배운 뒤에 최종적으로 블록체인 프로젝트에 합류합니다.

.

조금 더 자세하게 알아볼까요? 블록체인 개발자의 실제 업무를 예로 들어 살펴보겠습니다. 블록체인 개발자는 크게 서비스 개발자, 코어 개발자, 데브옵스 엔지니어로 나눌 수 있는데요. 각각의 개발자는 또 다양한 직업군으로 나누어져 있습니다. 그럼 지금부터 하나씩 살펴보겠습니다.



서비스 개발자


서비스 개발자는 크게 프런트엔드 개발자, 백엔드 개발자, 스마트 컨트랙트 개발자로 나뉩니다.

.

프런트엔드 개발자는 React와 같은 웹 기반 개발 스택을 기본적으로 잘 다룰 줄 알아야 하며, 사용하고자 하는 체인에 맞는 라이브러리를 숙달해야 합니다. 이를 통해 MetaMask, Kaikas 등과 같은 지갑 시스템과 연동하거나, 서버 또는 스마트 컨트랙트에서 처리되는 트랜잭션 데이터를 화면에 표현해 줍니다.

.

백엔드 개발자는 스마트 컨트랙트와 프런트엔드 영역 그리고 데이터베이스 사이의 통신 시스템을 구성합니다. 스마트 컨트랙트 개발자는 블록체인 가상 머신(Virtual Machine, 이하 VM) 위에서 시스템을 작동할 수 있도록 코드를 구현하고 유지, 보수합니다. 이렇게 개발자들이 함께 만든 서비스를 탈중앙화 어플리케이션(Decentralized Application, 이하 dApp)이라고 하며, 이 서비스에 관련된 개발자를 dApp 개발자라고도 합니다. (일부 블록체인에서는 Blockchain Application, 줄여서 bApp이라고도 합니다.)

.

dApp 개발자는 스마트 컨트랙트를 바탕으로 탈중앙화 된 App을 만드는 과정입니다. 스마트 컨트랙트를 포함하는 블록체인인 이더리움, 솔라나, 하이퍼렛져 등등 다양한 플랫폼들은 각자 사용하는 컨트랙트 언어가 다릅니다. 국내에서는 대표적으로 그라운드엑스, 노드게임즈 등이 있습니다.

.

우리가 일상 속에서 사용하는 일반적인 App와 dApp 간엔 어떤 차이가 있는지, dApp 개발엔 어떤 어려움이 있는지, 실제 dApp 개발을 경험한 개발자에게 물어보았습니다.

.

“dApp이라고 해서 기존의 App들과 크게 다르진 않습니다. 다만 데이터베이스의 의존도가 조금 달라질 뿐입니다. 경험했던 프로젝트 중에는 100% On-Chain을 사용해서 데이터베이스를 캐시 형태로만 사용한 dApp 개발도 있었고, 데이터베이스에 모든 정보를 저장하고, DID의 고유 넘버 발급만을 사용하는 dApp 개발도 있었습니다.”

.

“엔터프라이즈 산업 관련된 dApp 개발이 정말 까다롭습니다. 대기업이나 공공기관들과 함께 하다 보니, 외부에서 내부로 접속하는 부분부터 보안까지 타 업체와의 마찰도 정말 많이 생깁니다. 시스템 자체가 보안성이 높다고는 하나 금융사건과 관련된 개발인 만큼, 무언가 잘못되었을 때 조금 더 민감하고 여러 업체와 함께 할 경우 고려해야 하는 사항도 더욱 많아집니다. 특히 망분리법에 의해 구글링을 할 수 없는 경우에는 개발 환경이 구성되고 나서 개발한다고 생각하면 안 됩니다.”

.

“React와 Wallet, 그리고 WebGL을 활용한 Unity로 블록체인 게임을 만들었습니다. Unity와 WebGL 빌드에서 지원하는 라이브러리가 없다 보니 새로운 영역을 개발하는 듯했고, 이런 라이브러리들을 하나씩 만들어가면서 개발하다 보니 시간도 오래 걸렸습니다. 또한 100% 온체인으로 다 만들고 나니 실제 우리가 즐기는 게임하고는 유저 경험에서 너무나 많은 차이가 나서 다시 처음부터 개발하기도 했습니다.”

.

“스마트 컨트랙트는 한 줄의 코드라도 잘못 짠다면 취약점이 발생합니다. DeFi(탈중앙화 금융, Decentralized Finance)를 개발할 경우 이런 취약점 하나가 모든 암호자산의 탈취까지 이어집니다. 테스트 하기 위한 환경도 구현하기 쉽지 않습니다. 여러가지 경우의 수를 다 테스트하고 스마트 컨트랙트 오딧 업체의 감사를 거쳐도, 막지 못하는 취약점이 발생하기도 합니다.”

.

이들의 경험을 듣기만 해도 쉽지 않을 것이라는 생각이 드시나요? 하지만dApp 개발자 뿐만 아니라 기존의 App 개발자들 역시 결이 비슷한 고민을 하고 있습니다. 오히려 지갑의 연동과 스마트 컨트랙트의 연동을 제외하면, 많은 부분에서 기존의 App 개발과 비슷한 것이 많아 기존의 개발자가 쉽게 습득할 수 있죠.

.

하지만 위에서 이야기했던 것처럼 블록체인에 대한 이해가 깊지 않을 경우, 자산의 탈취에 관한 다양한 위험이 우리를 기다리고 있습니다. 심장이 쫄깃한 개발을 경험하고 싶으신 분들에게 어울리는 개발이 바로 블록체인 개발자 테크입니다.

.

서비스 개발자들이 많이 사용하는 언어는 Java, C/C++/C#, Go, JavaScript, Rust, Solidity, React, Python 등이 있으며, 블록체인 개발 직군중에 가장 많은 인원이 속하는 만큼, 회사 간 사용하는 언어의 차이가 큰 편 입니다.



코어 개발자


스마트 컨트랙트가 동작하기 위해서는 비트코인과 이더리움 등으로 대표되는 해당 환경을 제공하는 플랫폼이 있어야 합니다. 이러한 플랫폼을 만드는 개발자가 바로 코어 개발자입니다.

.

코어 개발자는 주어진 환경에서 버그 없이 동작하는 프로그램을 개발해야 합니다. 따라서 블록체인 관련 전문 지식과 컴퓨터 공학(Computer Science, 이하 CS) 지식을 깊이 이해하고 있어야 합니다. 국내에서는 주로 오픈소스로 공개된 플랫폼을 연구하여 새로운 형태로 개발하는 코어 개발을 많이 진행합니다. 이를 위해 코드를 분석하는 능력과 원하는 기능을 추가하거나 제거하는 능력 그리고 연동되는 시스템에 대한 이해가 필요하죠. 그런 만큼 서비스 개발자와 비교해 진입장벽이 상당히 높습니다.

.

이뿐만이 아닙니다. 코어 개발자는 블록체인 코어에 대한 깊은 이해를 바탕으로 블록체인 코어 개발과 연동되는 암호학, 합의 알고리즘 그리고 지갑과 같은 다양한 개발을 진행하기도 합니다. ‘오픈소스 기반이니 금방 할 수 있겠지’ 라고 생각하시겠지만, 거대한 양의 오픈소스 코드를 백서에 맞게 버그 없이 개발하기란 정말 쉽지 않습니다. 무에서 유를 창조한다는 말이 있죠. ‘오픈소스에 기반하는 만큼 무는 아니지 않아?’라고 생각하실 수도 있지만, 그만큼 어렵다는 의미입니다. 국내에서 코어개발을 진행하는 대표적인 기업에는 크러스트, 링크(라인) 등이 있습니다.

.

코어 개발을 경험한 개발자에게는 어떤 어려움이 있는지, 코어 개발자에게 물어보았습니다.

.

“신입 코어개발자로 커리어를 시작했는데, 내용을 알고 있는 사람이 회사에 없었습니다. 경력직이고 신입이고 모두 다 처음부터 맨땅에 헤딩하며 오픈소스를 분석하고 작동시켜야 했습니다. 코어개발을 공부하며 단순히 프로그래밍만 공부하는게 아닌, CS 지식과 암호학, 합의 알고리즘 등 모든 블록체인 지식을 배경으로 가지고 있어야 했습니다. 코어개발자라는 타이틀을 가지고 있었지만, 보고 공부하고 이해해야 하는 시간이 40%, 코드를 고치는 시간이 1%, 버그를 고치는 시간이 59%였습니다.”

.

“처음 코어개발을 시작했을 때, 비트코인 공식 깃허브에서 오픈 소스를 다운받아 코어개발을 시작하려 했습니다. 당당하게 비트코인을 빌드했는데 작동하지 않았습니다. 오픈 소스는 보통 금방 실행할 수 있도록 되어 있다고 생각했는데 비트코인은 예외였습니다. 아니 대부분의 코인 플랫폼들이 그랬습니다. 조금 익숙해졌다 싶은 생각이 들어 무언가 하나를 고치면 모든 게 망가졌습니다. 거대한 코어 개발에 대해 많은 부분을 이해하고 나서야 가까스로 변수 하나를 변경할 수 있었습니다.”

.

“사람을 구할 수가 없습니다. 신입을 뽑아도 비트코인과 이더리움 코드만 3개월간 보다가 이해하지 못하겠다며 퇴사하는 사람들이 많았습니다. 정말 블록체인을 좋아하고, 사랑하는 사람들만 남았습니다. 기존에 코어개발을 했던 개발자들을 데려오려면 몸값이 너무 높았습니다. 코어 개발 같은 규모의 개발을 국내 스타트업에서 진행하는 것은 불가능에 가깝다고 생각합니다.”

.

“리눅스 기반 개발인데 C, C++ 개발을 경험했던 게임 개발 경력자들이 더 쉽게 적응했습니다. 많은 양의 코드를 다루어 보았고, CS지식을 보유했으며, 어셈블리 디버깅을 해본 경험이 있다면 코어 개발자로 전향하라 이야기합니다. 현재 회사에서는 5년차 이상 또는 박사급 학위나 CS지식이 뛰어난 개발자들만 뽑고 있습니다. 게임 개발자나 VM을 전문적으로 연구한 연구원들이 그나마 잘 적응하는 편입니다.”

.

몇 안되는 국내의 블록체인 코어 개발자들의 이야기는 눈물없이 들을 수 없는 이야기가 많았습니다. 코어 개발자에 대한 수요는 많으나 코어 개발에 적응하는 것은 쉽지 않으며 진입장벽이 높아 커리어 전환도 쉽지 않다고 합니다.

.

그렇지만 본인의 가치를 더욱 높이고 싶은 개발자들이 코어 개발을 공부하고 있고, 국내에서도 점점 많은 코어 개발자들이 생겨나면서 양질의 자료들이 생겨나고 있습니다. 앞으로 더욱 기대가 되는 분야이고, 개발과 코드리뷰 그리고 CS에 자신이 있는 사람들이 도전하기에 충분한 블록체인 개발자 테크라고 생각합니다. 코어 개발자들이 많이 사용하는 언어는 Rust, Go, C++, C#, Python 등이 있습니다.



데브옵스 엔지니어


블록체인 개발자를 이야기하는데 왜 갑자기 엔지니어가 나올까요?

.

데브옵스 엔지니어링이 블록체인 개발에 빼놓을 수 없는 중요한 요소이기 때문입니다. 블록체인에는 노드라는 시스템이 존재합니다. 이는 고가용성이 필요한 컴퓨팅 시스템으로써 노드는 언제나 모든 사람에게 투명하게 공개되어야 하며, 블록 생성의 역할도 가지고 있고, 한편 보안 측면에서 악의적인 공격에 대한 대응도 준비되어 있어야 합니다.

.

데브옵스 엔지니어는 단순하게 엔지니어링만 다루거나 이를 유지, 보수하는 업무만 하지 않습니다. 노드를 이용해 블록체인 데이터를 추출하여 각 플랫폼마다 존재하는 코인 데몬, 지갑 데몬과 같은 함수를 호출하는 것으로 같은 형태의 데이터베이스를 유지하고, 해당 데이터베이스를 블록체인 네트워크와 동일하게 유지해야 합니다.

.

데브옵스 엔지니어는 거래소, 노드 밸리데이터, 그리고 DeFi를 운영하는 회사 등에서 많이 채용되며, 국내에는 대표적인 기업으로 빗썸과 DSRV 등이 있습니다. 거래소 개발을 경험한 개발자와 노드 밸리데이터 운영 경험이 있는 엔지니어에게 데브옵스 엔지니어에 대해 물어보았습니다.

.

“거래소에 근무할 당시 대표 코인인 비트코인, 이더리움, 라이트코인, 이오스, 리플 등의 각각 코인의 노드 및 지갑 데몬을 만질 줄 알아야 했습니다. 또한 노드를 돌리기 위해서는 Amazon Web Service(이하 AWS)나 Azure를 사용해 충분한 용량과 스펙을 확보 해 두어야합니다. 거래소 개발자라고 해서 서버 개발만 하는 줄 알고 입사했는데, 인프라 영역까지도 만질 줄 알아야 했습니다.”

.

“코인들이 주기적으로 업데이트할 때마다 제일 무섭습니다. 기존의 함수나 시스템이 달라지는 경우도 있고, 그렇게 되면 그걸 분석해서 우리 거래소에 적용을 해야 하기 때문입니다. 아직도 잊을 수 없는 건 EOS입니다. EOS의 노드가 문제인 건지 뭐가 문제인 건지 몰라 30번은 설치하고 삭제하기를 반복했습니다. 동기화 걸리는 시간에 맞춰 기다려서 다음날 출근해서 입출금 테스트를 해보면, 되는 것 같다가 다시금 실패하고 하는 문제가 약 1달 동안 지속되었습니다. 타 거래소도 이때 EOS 입출금을 잠시 막았었습니다.”

.

“사건은 꼭 새벽에 터집니다. 새벽 시간대에 대기해서 인스턴스를 업데이트해줘야 하는데, 업데이트하고 나면 항상 말썽입니다. 동기화가 안된다던가, 특정 함수가 변경되어 서버에서 읽지 못한다던가. 실수로 계속해서 블록을 만들지 못하게 되면 PoS기반 블록체인 플랫폼에서는 슬래셔가 발생하여 회사의 재산 또는 고객님들의 재산을 날려버리는 불상사가 일어날 수도 있습니다. 아직까지는 그런 경험이 없었지만, 이번 이더리움 PoS는 너무나 큰 두려움으로 다가오고 있습니다.”

.

“AWS와 Google Cloud Platform(이하 GCP)를 동시에 구현하는 게 상당히 중요합니다. AWS가 만약 꺼지기라도 해서 블록 동기화를 따라잡을 수가 없다면, 빠른 속도로 진행되는 블록체인의 경우 그것을 따라잡는데 몇 시간에서 많게는 수십일까지 걸리기도 했습니다. 그동안 입출금이 진행되지 않으면 거래소 욕은 우리가 다 먹이는 셈이 되죠. ‘블록체인이 아직까지는 발전이 안되어서, 앞으로 더 좋은 블록체인이 나오면 그런 일이 없을 거야’ 라고 생각했었습니다. 하지만 비트코인과 이더리움, 리플, 라이트코인을 아직까지 사용하고 유지 보수할 줄은 몰랐습니다.”

.

네카라쿠배당토직야몰두샌으로 이어지는 신입 개발자가 가고 싶은 회사 순위에 들어간 두나무도 업비트라는 거래소를 운영하고 있습니다. 거래소에서 가장 많이 채용이 되는 블록체인 데브옵스 엔지니어 또는 코인 데몬 개발자는 인프라와 블록체인에 대한 이해가 높아야 하는 블록체인 개발자 테크입니다. 블록체인 네트워크에 있는 데이터를 망이 분리된 서버에서 사용하기란 정말 쉽지 않습니다. 이런 엔지니어들은 새로운 플랫폼이 나오면 R&D하여 노드를 운영해보고 기존 서비스에 접목시키기도 하며, 만약 여러분이 새로운 개발이나 새로운 스마트 컨트랙트를 사용할 경우 모범 사례 자료들을 활용하여 자체적인 PoC를 개발하여 효과와 효용 그리고 기술적인 검증을 해봅니다. 새로운 개발이나 새로운 플랫폼에 관심이 많고, AWS, Azure, GCP등을 다루는데 능숙하다면 데브옵스 엔지니어가 바로 여러분이 찾던 포지션일 수 있습니다. 데브옵스 엔지니어가 주로 사용하는 언어와 툴은 Java, Go, Python, Node, AWS, Azure, GCP 등이 있습니다.






지금까지 다양한 블록체인 개발자의 종류에 대해 알아보았습니다. 이제 블록체인 개발자에 대해 여러분의 지인에게 오해받지 않도록 잘 설명할 수 있겠죠? 최근에 부상하기 시작한 블록체인에 대해 흥미는 가지고 있으나, 막상 접하면 어려워하시는 경우가 많이 있습니다. 이런 블록체인 개발자의 출발을 기초부터 도전할 수 있는 부트캠프 코스가 코드스테이츠에 준비되어 있습니다. 불어오는 Web 3.0 시대에 걸맞은 역량을 기르고 그 속에서 찾아온 기회를 놓치지 않도록 지금 도전해 보시는 것은 어떠신가요?







스파크플러스 입주사, 코드스테이츠가 이야기하는 ‘블록체인 개발자는 어떤 일을 할까?’ 흥미롭게 보셨나요?


계속해서 발전해 나갈 개발 직군은 앞으로도 다양한 분야에서 더욱 커다란 존재감을 나타낼 것으로 보입니다. 블록체인 개발자라는 직업 자체가 생소하거나 관심이 있지만 처음부터 다가가기 어렵다고 생각하시는 분들도 많은데요. 스파크플러스는 이를 도와줄 코드스테이츠와 함께합니다.


스파크플러스에도 수많은 입주사와 더불어 다양한 분야의 개발자분들이 계시는데요. 지금도 불철주야 노력하고 계실 개발자분들이 보다 더 좋은 환경에서 근무하실 수 있도록 계속해서 노력할 예정입니다.


[스플X코드스테이츠]의 콜라보 콘텐츠는 한 달에 한 번 발행되고 있는데요.

다시 찾아올 코드스테이츠와의 콜라보 콘텐츠, 많이 기대해 주세요!



▼ 스파크플러스X코드스테이츠 특별 혜택 신청하기 ▼

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari