<IT계열 직군 소개>
아래 글의 출처 : https://gall.dcinside.com/programming/1077555
안녕하세요, Wabu대표입니다.
항상 물리학1 교육 컨텐츠로만 인사드렸는데, 사실 저는 CS전공이랍니다 :)
저는 서울대학교 컴공 학부 졸업 후 그대로 대학원에 들어가 올해 2월에 석사 졸업 예정이구요, 지금은 중소기업에서 병특으로 머신러닝 엔지니어로 일하고 있습니다. 컴공을 졸업하면 무슨 일을 하는지 궁금한 학생들을 위해 IT계열 직군에 관해 간단히 소개하고자 합니다.
IT 직무는 원래 업무가 칼같이 딱딱 나뉘지 않아서 업무를 각각 다 소개하는 게 불가능합니다. 그래서 대분류로 정말정말 대표적인 몇 가지만 소개해드립니다.
실제로는 이와 독립적인 업무 분야가 많고, 몇 가지를 동시에 조합해서 일하는 직무도 많아요. 그리고 같은 CS전공자라해도 분야가 너무 넓고 달라 서로(저도) 잘 모르는 게 많습니다 ^^;
저 외에도 현직자 분들 알고 계신 정보를 공유해주시면 감사하겠습니다. :)
※ 여기서 잠깐, 일반인을 위한 간단한 약어 정리
IT = 정보 기술 (인터넷 기술 아님 주의)
CS = 컴퓨터 과학
EE = 전자 공학
QA = 품질 보증
AI = 인공 지능
ML = 기계 학습
DB = 데이터베이스
UI/UX = 사용자 인터페이스/사용자 경험
Dev = 개발
Ops = 운영
HPC = 고성능 컴퓨팅
PM = 프로젝트 매니저
GPGPU = 그래픽 카드를 이용하여 과학 시뮬레이션, 수치 해석, 머신러닝 학습 등을 하는 것
<IT 서비스 계열>
초창기 IT 직군 중 개발에 관련된 직무들입니다. 이쪽 중소 기업은 코딩 노예의 본진입니다. 일단 분류 자체가 전문 기술이나 학문 전공이 아니라 회사의 업종, 성향에 따라 나뉘어집니다.
1. SI (system integration) -- 시스템 통합
쉽게 말해 비IT 회사나 학교/병원/정부기관 등에서 사람이 수기로 하던 행정 업무를 자동화하는 업무입니다.
예를 들어 "새학기 시간표를 자동으로 짜주는 프로그램을 만들어주세요", "옷을 파는 홈쇼핑 웹사이트를 만들어주세요", "맥도날드 키오스크를 작동시키는 프로그램을 만들어주세요" 같은 프로젝트를 수주받아서, 해당 업무가 가능한 기술을 가진 개발자들로 팀을 꾸려 프로젝트를 진행하는 일을 합니다.
쇼핑몰 업계라고 하면, 쇼핑몰 업체들이 각자 사이트, DB, 회원 정보, 결제 등등을 담당하는 인력을 다 채용하는 대신에 이에 특화된 관련 SI/SM 업체에 외주를 주는 식입니다. 코인 거래소도 직접 거래소 시스템을 개발/운영하는 경우도 있지만, 아주 큰 기업이 아닌 이상은 블록체인 SI 기업에 외주를 맡기는 경우가 많습니다.
프로젝트의 납품 기한이 정해져 있고, 비용을 받아 진행하다보니 가능한 한 적은 개발자로 짧은 시간에 굴리는 게 이득인 구조가 된다는 점, 프로젝트의 성격을 본사에서 마음대로 결정할 수 없다는 점 등 때문에 소규모 SI 업체에서는 돈을 벌기도, 성장하기도, 건강하기도 어려운 경우가 생기기 쉽습니다.
SI라고 해서 다 옛날 기업인 것은 아닙니다. 스타트업인데 자체적으로 서비스를 운영하는 게 아니면 보통 SI입니다. 6개월 국비 지원을 받아 공부하거나 하면 SI업체를 많이 소개받게 되는데요, 함정카드가 더 많기 때문에 조심해야 합니다. 함정카드가 아니더라도, 회사 특성 상 자체 플랫폼에 기반한 사업을 하는 것이 아니기 때문에, 처음으로 시작하는 연봉이나 기술 스택 등에 불이익이 있을 수도 있습니다.
위는 중소기업 이야기이고, 대기업 계열사의 경우 삼성SDS 같은 큰 SI/SM 업체를 꾸려 내부에서 프로젝트를 하기 때문에 같은 SI라고 해도 연봉도 높고 상대적으로 복지도 좋습니다. 일은 상대적으로 재미없다고 듣기는 했습니다만 하기 나름이겠죠? 프로젝트라고 해도 그 성격이 중소기업과 다른 경우도 많습니다. 제조업쪽인 경우 기계/전자/화공 등의 도메인과 관련된 프로그래밍을 많이 하게 되기 때문에 독특한 매력이 있습니다.
SI 에서 경우에 따라서는 프리랜서로 일하는 사람도 있습니다. 회사에서 보험료, 식대 등으로 떼가는 금액이 없기 때문에 + 여러 프로젝트를 동시에 받아 일할 수 있기 때문에 돈을 더 많이 벌기도 합니다. 물론 실력이 좋아야겠죠? 그리고 퇴직연금/건강보험 지원이나 세금 감면 혜택 등도 받기 어렵기 때문에, 항상 상위호환은 아니고 선택 사항입니다.
2. SM (system maintenance) -- 시스템 유지보수
SI를 보내 완성된 프로젝트를 회사 내부에서 업그레이드, 버그 수정 등을 하는 업무입니다. SI와 관련이 깊기 때문에 SI/SM을 함께 하는 경우도 많습니다. 업무 특성 상 일을 잘해도 회사가 보기에는 본전 치기로 보인다는 단점이 있습니다.
중소기업 신입은 2천 중반 ~ 3천 초반 정도 받게 됩니다, 계열사의 SI/SM 업체는 IT계열보다 비IT계열의 인사 체계에 가깝기 때문에 그냥 회사원과 비슷하다고 보면 됩니다. 호봉제인 곳도 있습니다. 연봉대는 5년차 기준 4천대, 5천대, 6천대, 7천대로 급간이 있고, 연봉 인상률이 안정적인 편(으로 들음)입니다. 우리FIS, 삼성SDS, 한국정보통신 등의 회사에서 급여를 가장 많이 주고, 그 다음으로 현대오토에버, LG CNS, 농협정보, SK C&C, 미라콤 등이 추격하는 걸로 압니다.
3. 솔루션 개발
쉽게 말해 더블 클릭하면 실행되는 프로그램을 만드는 업무입니다.
이 직군도 사실 구분이 굉장히 애매한데요, 지금처럼 웹/모바일 등이 보편화되지 않았을 때 이렇게 많이 불렀고, SI/SM처럼 다른 회사의 프로젝트를 수주받는 것이 아니라 자기 회사만의 프로그램을 만들어 파는 회사의 개발자라고 생각하시면 됩니다.
4. 금융 IT
쉽게 말해 은행 내부의 전산직입니다. 금공이라고도 부르는 한은, 금감원, 코스콤 등에도 있습니다. 그외에도 카드사, 보험사, 신용평가사 등등 다양한 관련 분야를 포함합니다. 내부적으로 계정계, 채널계, 정보계, 보안 등등 다양한 계열로 나누어져 있고, 각각의 업무에 필요한 기술이나 대우가 다른 편입니다.
일반적인 프로그램과는 다른 요구사항이 많기 때문에 금융IT개발 경력은 다른 개발 경력과 구분합니다. 업무 분위기나 급여 정책도 다른 IT기업보다 은행권에 더 가깝습니다. 들어가는 데 면접보는 것도 인적성에 가깝습니다.
요새는 다른 핀테크 업무나, 토스(비바리퍼블리카), 카카오페이, 카카오뱅크 등 기존의 금융IT 개발과 더불어 신기술을 요구하는 곳이 많습니다. 이런 곳은 업무 분위기가 은행권보다는 그냥 IT기업군에 가깝습니다. 돈도 많이 줍니다. 예를 들어 토스는 어느 정도 경력 쌓고 들어가면 바로 억대 연봉자가 됩니다. 물론 금융쪽은 그냥 돈을 많이 줍니다.
<Game 계열>
게임은 굉장히 독특한 소프트웨어입니다. 게임 개발은 결코 다른 테크 개발보다 쉽지 않습니다. 어려우면 어렵죠. 하지만 업무 강도가 높고, 급여가 업무량에 비해 짭니다. 금액 자체가 적은 것은 아닌데, 하는 일에 비해서는 상대적으로 모자랍니다. 돈보다는 개발자들의 게임에 대한 열정으로 굴러가고 있습니다.
게임 개발은 수학(산수)이나 최적화 기법이 가장 널리 직접적으로 활용되는 분야입니다. 또한 여러 CS 기반 지식을 게임이라는 특수한 상황에 적용하는 업무를 하게 됩니다. 그래서 공부를 많이 해야하고, 경력도 많이 쌓아야 합니다. 무엇보다 성공적인 게임(...)을 많이 거쳐오는 게 좋기 때문에 운도 좋아야 합니다.
1. 게임 클라이언트 개발자
게임 클라이언트는 쉽게 말해 여러분의 데스크탑에서 실행되는 부분을 말합니다. 전통적으로 Windows에서 C++, C# 등을 이용해서 데스크탑 클라이언트 개발을 해왔고, 요새는 안드로이드, iOS 등 모바일 플랫폼에서의 게임 앱 개발도 많이 합니다.
데스크탑 클라이언트에는 다이렉트X, OpenGL 등 그래픽스 기술이 필요합니다. 자연히 라이브러리/OS 호환성이나 GPU 가속 기술 등도 잘 알아야 합니다. 코드만 알아서는 안 되는 것이죠. 모바일 클라이언트는 데스크탑보다 모자란 계산능력/용량을 최적화하고, 통신 프로토콜과 통신 과정에서의 보안 등의 이슈를 해결해야 합니다. 결국 하드웨어나 미들웨어 수준의 내용도 잘 알아야 합니다.
2. 게임 서버 개발자
LoL 같은 팀 대전 게임, 메이플 같은 RPG 게임이나 대부분의 모바일 게임에는 서버가 있습니다. 인터넷으로 여러 사용자들이 함께 실시간으로 게임을 해야 하기 때문입니다. 그런데 단순히 로그인/로그아웃이나 아이템 획득 목록을 저장하는 것만 서버의 기능이 아닙니다. 게임 서버에는 다양한 문제가 발생하고, 그런 문제를 해결하는 것도 서버 개발자의 일입니다.
실시간으로 대전하는 FPS 게임의 예) 사용자들의 클라이언트에서 보내는 정보가 서버에 모아지고, 서버에서도 클라이언트로 계속 정보를 보내주는데요, 글로벌 서버 수준이 되면 빛의 속도가 너무 느려서 지연이 생기기 마련입니다. 이런 문제를 온갖 테크닉과 최적화로 해결해야 합니다!
3. 엔진 시스템 엔지니어
게임 개발을 위해 사용하는 다양한 엔진이 있는데 (ex. 물리 엔진) 수학/물리, 전공 지식을 활용해 이런 엔진을 개발하는 업무입니다. 제가 아는 사람 중에는 없어서 자세한 것은 잘 모르겠습니다.
게임 중소기업은 추천하는 경우가 거의 없습니다. 유명한 큰 기업은 구로의 등대 넷마블, 판교의 3N(NHN, NEXON, NCSOFT), 크래프톤(배그), 스마일게이트 정도인데 회사마다 내부 사정이 이것저것 다릅니다. SKP 카르텔이 쎈 곳도 있습니다. 극히 최근에는 포괄임금제 제재를 받아 연봉 인상률에 타격이 큰 것으로 알고 있습니다.
이유는 안 찾아봐서 잘 모르는데, 게임 쪽에 몸담고 계신 분들 중 잘하시는 분들이 독일이나 미국 같은 외국계에 많이 계시더라구요. 게임에 관심있는 분들은 해외 취업도 같이 고려해보시는 게 좋겠습니다. 게임 덕후들은 콘솔/패키지/인디 게임 류를 좋아하는 경우도 많은데 우리나라는 아무래도 MMORPG 개발에 비교우위가 있어서인지 다른 장르는 많이 약하더라구요.
<Device 계열>
노트북, 데스크탑 컴퓨터, 서버실의 서버 같은 일반적인 컴퓨터들이 아니라 모바일 기기, 센서 기기, 프린터, 가전이나 자동차 등에 탑재된 작은 컴퓨터(스마트 뭐시기), 드론 등등 공간/동력 등 환경의 제약이 큰 곳에 내장된 소형 임베디드 장비들을 다루는 업무입니다. 특수한 하드웨어를 잘 알아야 되는 경우가 잦습니다.
1. 모바일 앱 개발자
모바일 게임 클라이언트 개발과 비슷해 보이지만, 업계가 판이하게 달라 분리했습니다.
여러분의 스마트폰에 있는 다양한 어플을 개발하는 일을 합니다. 단순히 어플의 기능을 구현하는 경우도 있고,
본래 데스크탑에서나 되던 걸 최적화를 통해 모바일에 이식하는 일도 있다고 보면 됩니다.
안드로이드는 JAVA나 Kotlin 같은 JVM 계열 언어를 이용하여 많이 개발합니다. 한편 iOS는 Swift나 Objective-C 같은 전용 언어를 이용해야 합니다. 또한, 서버(백엔드)와 통신해야 하기 때문에 통신/네트워크 쪽도 잘 알아야 합니다~
2. 임베디드 엔지니어
임베디드 장비에서 구동되는 시스템/응용 소프트웨어를 개발하는 업무입니다. 기존의 멍청한 장비들은 하드웨어 추상화가 덜 되어, 어셈블리나 비슷한 수준의 C로 코딩해야 되고 하드웨어에 대해 (너무) 잘 알아야 해서 전자과의 분야라고 생각되었으나, 요새는 점차 하드웨어 의존도가 낮아져 컴공에서 많이 진입합니다. 드론 제어 같은 것들도 하드웨어를 넘어가면 이쪽이라고 보면 됩니다.
같은 모바일 디바이스를 다루더라도, 모바일 앱을 개발하는 것과 모바일 시스템 소프트웨어, 모바일 OS를 개발하는 것은 전혀 다릅니다! 누가 삼전에서 모바일 관련 일을 한다고 하면 위에 소개한 모바일 앱 개발자보다는 임베디드 엔지니어에 가깝다고 보면 됩니다.
예전에는 유비쿼터스라는 마케팅 용어를 만들어 뜨려고 했으나 잊혀졌고, 몇 년 전에는 스마트라는 마케팅 용어를 만들었으나 용어가 너무 남용되서 이득을 못봤을거고, 최근에는 IoT라는 마케팅 용어를 만들어 떡상하려고 노력하고 있지만 결과는 잘 모르겠습니다. 대충 임베디드 기기 사이에 네트워크 레이어를 추가하는 게 IoT라고 보면 됩니다. 요새는 임베디드 기기에서 인공지능을 심으려는 노력을 하고 있습니다.
3. 펌웨어 엔지니어
BIOS나 각종 스마트 가전 제품(TV 등)에 들어가는 펌웨어를 다루는 업무입니다. 사용자가 그 프로그램을 써서 뭘 할 때 필요한 거라기보다는 전자기기가 기본적으로 동작을 하도록 하는데 필요한 걸 만든다고 보면 됩니다.
임베디드 엔지니어와 펌웨어 엔지니어가 엄청 막 구분되는 건 아닙니다만, 펌웨어는 일단 쉽게 교체할 수 있는 소프트웨어가 아니라, 특정 하드웨어에 박혀있어서 전원을 킬 때 시작된다던지 항상 돌아간다던지 하는 것들입니다. 근데 요새는 별로 Firm 하지는 않다네요 플래시메모리에 넣으면 되어서(...)
<Web 계열>
웹은 현재 그냥 개발자라고 하면 웹 개발자를 의미한다고봐도 될 정도로 뜬 분야입니다. 공급도 가장 많고, 수요도 가장 많으며, IT기업이든 비IT기업이든 모든 회사에서 필요로 합니다. 예전에는 SI업체에서 수주를 받아 사이트를 만들었다고 한다면, 요새는 각 회사에서 웹 개발 팀을 따로 두고 있습니다.
지금 가장 빠르게 변화하고 있기 때문에 개발자가 계속해서 공부해야한다는 인식을 만들어낸 분야입니다. 구글, 페이스북, 아마존, 등등 다양한 글로벌 IT 공룡 기업이 뭘 하는 지 보면 결국은 웹을 기반으로 한 플랫폼입니다. 우리나라에서 새로 대기업급에 진입한 네이버/라인과 찐 대기업인 카카오도 마찬가지이고, 급성장한 스타트업인 토스(비바리퍼블리카), 배민(배달의민족), 쿠팡 등등 모두 웹/앱 플랫폼을 기반으로 하고 있습니다.
1. 프론트엔드 엔지니어
여러분이 파이어폭스, 크롬, 사파리로 웹사이트에 접속하면 나오는 페이지를 만듭니다. 정확하게는 그 페이지를 통해 사용자와 서버가 상호작용하는 창구를 만듭니다.
※ 참고로 사이트를 기획하고 디자인하는 업무는 UI/UX 디자이너라고 따로 있습니다.
홈페이지 만드는 그런 거는 쉬운 거 아닌가 하겠지만, 여러분의 홈페이지는 한 명만 들어가서 그렇습니다. 수만 명이 들어가서 온갖 이상한 방법으로 버튼을 눌러 트래픽을 발생시키는 사이트를 회사의 별 희한한 요구사항 아래에서 계속 정상적으로 돌아가게 해야하는 일입니다. 사이트가 정지하면 회사 입장에서 손해가 엄청나게 크겠죠?
기본적으로 HTML CSS JS를 스타트로 Angular/React/Vue 등 다양한 JS 프레임워크를 주로 사용하고, JAVA 계열(JSP)이나 가끔 지옥의 php, asp.net 같은 .... 고대 유물을 쓰기도 합니다.
그 외에도 그냥 인터넷과 관련된 거의 모든 것을 다 알아야 하며, 계속해서 웹의 환경이 변화하기 때문에 새로이 공부해야 하는 게 많습니다. 지금은 대충 5년 정도마다 격변이 일어나는 것 같네요.
2. 백엔드 엔지니어
기존에는 그냥 서버 개발자라고 불리던 직군인데 이름을 힙하게 바꾸었습니다. 힙함과 갬성은 신세대 개발자의 기본 덕목입니다. 대부분이 웹 서버이기 때문에 Web 계열에 속해 있지만, 딱히 그럴 필요는 없습니다.
서버 개발이라고 해서 직접 하드웨어 컴퓨터를 만들거나 하는 것은 아닙니다. 웹 프론트엔드 엔지니어나 모바일 앱 개발자가 사용자에게 보이는 부분을 만든다면, 백엔드는 사용자에게 보이지 않는 모든 것을 만드는 직군이라고 보면 됩니다.
도메인에 필요한 로직, API 서버, 각종 데이터베이스, 대용량 데이터 처리, 정보보안, 통신, 서버 가상화 등 다양하고 넓은 분야를 기반으로 하여 응용 소프트웨어를 개발합니다. 추천 기능, 검색 기능, 길찾기 기능 같은 웹 서비스의 기능들이 바로 백엔드 엔지니어가 구현하는 것입니다.
또한 서버가 뱉어주는 로그를 정리한다던지, 어뷰징 유저를 탐지한다던지 하는 작업도 합니다. 대부분의 보안 솔루션 개발도 역시 넓게 보면 백엔드 개발에 포함된다고 볼 수 있을 정도로 업무/분야 경계가 모호하고, 사람마다 기술 스택도 많이 달라 표준화하기는 어렵습니다. 같은 백엔드 엔지니어라도 이 회사에서는 핵심 인력인데 저 회사에서는 그냥 신입일 수도 있습니다.
다만 우리나라에서는 특히 JAVA spring 프레임워크를 많이다룹니다. 특히 우리나라는 잘못 쌓아올린 역사 때문에 JAVA spring 갈라파고스라고 불릴 정도로 많이 씁니다.
전자정부 표준프레임워크라는 끔찍한(?) 것이 있기 때문입니다. javascript로도 node를 써서 벡엔드를 하기도 합니다.
3. 풀스택 개발자
혼자서 프론트엔드와 백엔드, 그외의 기타 업무를 혼자 처리하는 업무를 합니다. 뭔가 굉장한 사람처럼 보이지만 실제로 다 잘하기보다는 그냥 이것저것 조금씩 하는 경우가 대부분입니다. 외부로 서비스하는 핵심 프로젝트가 아니라, 내부에서 사용할 툴을 빠르게 개발한다던지 하는 백오피스 업무에 적합한 직무라고 할 수 있습니다.
하지만 스타트업처럼 사람이 귀하면 그냥 메인 프로젝트의 프론트엔드와 백엔드를 다 하기도 합니다. 이럴 땐 풀스택이라는 게 개발자를 싸게 굴리기 위해 만들어낸 용어가 아닌가 하는 감도 없지 않습니다. 둘 다 하면 당연히 돈을 두 배로 줘야 되는데 그렇지는 않습니다. 자꾸 이렇게 다 해주니까 코딩 노예라는 소리를 듣지
<Infrastructure & Operation 계열>
개발자들 만든 소프트웨어는 결국 어떤 하드웨어에서 실행되어야 하고, 그러한 하드웨어를 관리하는 것도 IT 기술을 필요로 합니다.
서비스, 플랫폼이 엄청나게 고도화되면서 관리를 인간이 할 수 없게 되고, 결국 필요한 관리 업무의 대부분이 소프트웨어로 자동화되고, 여러 회사로 분업화되었습니다. 여기서는 그러한 일을 하는 대표 업무들을 소개합니다.
1. DBA (database administrator)
데이터베이스는 서버나 자료구조와는 다른 것입니다. 수많은 데이터를 표의 형태로 저장하고, 검색하고, 요약하고, 분석하고, 수정하는 등의 일을 하는 작업장입니다.
그 데이터베이스에 새로운 데이터를 추가하거나, 기존 데이터를 변경하거나, 특정 조건을 만족하는 데이터를 추린다거나 하려면 그에 맞는 쿼리(query)를 컴퓨터 언어의 형태로 작성해야 합니다. 쿼리를 어떻게 튜닝하느냐에 따라 성능 차이가 어마어마하기 때문에 그런 이유로 DBA와 같은 전문 인력을 필요로 하는 것입니다.
또, DBA는 데이터의 성격에 따라/회사의 자원에 맞는 올바른 데이터베이스를 선택하거나, 여러 데이터베이스를 결합하거나, 서비스에 알맞은 DB 접근 방식을 설계 하는 등 DB와 관련된 아키텍팅을 합니다. 이처럼 상세한 데이터가 아주 많이 있고, 이를 자주 수정/변경하는 회사에서 많이 필요로 합니다.
예전에는 DB 관련 직군이 굉장히 세분화되어 있었는데 요새는 그렇지는 않은 것 같습니다. 자세한 것은 따로 구글링 ㄱㄱ
2. 시스템 엔지니어
※ 주의. 시스템 프로그래머/시스템 소프트웨어 엔지니어와는 전혀 다릅니다.
서버실에서 서버 설치하고 문제 해결하고 업그레이드 해주고 서버 세팅하시던 분들을 말합니다. 현장직이죠. 요새는 서버를 다 외부 기업의 데이터센터에 있는 클라우드를 쓰기 때문에 일반 회사에서는 점차 사라지고 있습니다. 정확히 말하자면 클라우드 엔지니어나 데브옵스와 같은 새로운 직군으로 옮겨가고 있습니다.
3. 네트워크 엔지니어
네트워크 장비 세팅하고 연결 문제 해결하는 등을 하시는 분들입니다. 단도직입적으로, 시스코코리아입니다.
네트워크가 단순히 인터넷을 가능하게 하는 기능도 있지만, 수많은 별개의 컴퓨터로 구성된 클러스터에서 인접한 컴퓨터들 사이에 데이터 교환을 굉장히 빠르게 해주는 고속 연결 네트워크 장비도 있습니다. 이러한 장비의 개발/운용/구성 등은 대형 데이터베이스 서비스,빅데이터 처리, 딥러닝 분산 학습 등에 필수적입니다.
4. 클라우드 엔지니어
AWS, GCP, 애져 같은 클라우드 자원을 활용하는 일을 전담하는 역할군입니다. 기존의 시스템 엔지니어가 직접 전산실을 담당했다면, 이제는 아마존 같은 회사의 클라우드 서비스를 활용하는 일을 담당하는 것입니다.
현대의 클라우드 플랫폼은 물론 전통적인 서버보다 활용이 편리하지만, 전통적인 서버 부하보다 현대의 서버 부하가 훨씬 크기 때문에, 관리가 결코 쉬운 일이 아닙니다. 게다가 그냥 켜두면 돈이 나갑니다. 딱 필요한 만큼만 쓰도록 스케줄링하는 일을 해줘야 합니다.
서버에 뭐 설치하고 껐다 키고 이런 수준을 넘어, 백엔드 개발자들이 만든 서버의 실행과 종료를 자동화하고, 가상화, 배포를 위한 최신 기술이 적용된 클라우드 서비스를 정의하여 돌려주는 일을 합니다.
5. 사이트 신뢰성 엔지니어
구글 정도 되는 거대한 회사에서 필요한 일입니다.
정확도 100%를 목표로 일하는 것이 아닌, 정확도 99.9%를 유지하는 내에서 개발자들이 새로운 시도를 할 수 있도록 관리하고 관련 인프라를 자동화합니다. 장애의 실시간 대응과 운영의 자동화를 동시에 집는 일을 합니다. DevOps와 굉장히 유사합니다. 사실 이쪽 계열이 아직 정립 중이라 새 용어가 많은 경향이 있습니다. 궁금하신 분은 구글에서 낸 책을 읽어보시면 됩니다.
6. DevOps -- 데브옵스
프론트엔드 엔지니어, 모바일 앱 개발자, 백엔드 엔지니어가 개발을 할 때, 코드 관리, 환경 관리, 인프라 관리, 신제품 개발, 신제품 테스트, 서비스 올리기, 모니터링 등등 개발을 돕는 운영(Operation)을 전담하는 그룹이 따로 있습니다. 이를 데브옵스 팀이라고 합니다. 원래는 이런 운영과 개발을 동시에 해야한다는 일종의 격언(?)이었는데, 요새는 이런 운영을 갖가지 기술을 활용해서 자동화하는 엔지니어를 이야기하는 경우가 국룰인 것 같아요.
데브옵스는 기본적으로 소프트웨어 개발이 어떤 싸이클로 이루어지는 지도 알아야 하고, 이를 추상화하고 모듈화해서 필요한 부분을 자동화하는데 필요한 능력도 있어야 하고, 가상화, 컨테이너 기술, 서버 지식 등등 관리자나 운영자로서의 능력도 필요하기 때문에 서비스를 직접 개발하는 것을 제외한 모든 것을 한다고 보면 됩니다. 데브옵스는 신입 연봉이 없습니다. 신입이 없기 때문이죠 깔깔...
7. MLOps
머신러닝 버전의 데브옵스입니다.
머신러닝 연구에는 단순히 인공신경망을 설계하는 것만 필요하지 않습니다.
- 진짜 데이터를 수집하고,
- 노이즈가 많은 진짜 데이터를 가공하고,
- 이를 학습 가능한 형태로 바꾸고(레이블을 단다던가),
- GPU 클러스터를 얼마나 어떻게 활용해서 얼마나 많은 신경망모델을 학습시킬 지 결정하고, 분배하고,
- 학습 과정을 모니터링하고, 장애가 발생하면 대응하고,
- 학습 완료된 신경망모델을 검증 및 비교하고,
- 선별된 신경망모델을 실제 제품화하고,
- 각종(서버든 클라든) 버전 문제 해결하고,
- 실제 사용 경험을 토대로 계획 세우는 등
엄청나게 많은 전처리/후처리/유지보수가 필요합니다.
ML 개발은 다른 유형(웹, 앱, 윈도우즈 클라 등)의 개발과 다른 특성(어마어마한 데이터, 어마어마한 계산, 모호한 테스트 등)을 많이 가지고 있기 때문에 일반적인 DevOps 업무와는 다른 요구사항과 자동화 도구가 필요하고, 이를 구축하는 업무가 MLOps라고 보면 됩니다.
<Domain 계열>
CS 또는 다른 분야의 심화된 도메인을 다루는 특화된 업무를 소개합니다.
금융 IT도 사실 여기에 들어간다고 보면 됩니다.
백엔드 개발자에 포함시킨다면 포함된다고도 할 수 있겠지만,
이 도메인들은 웹 서비스 같은 플랫폼에 국한되지 않고, 전문 지식이 많이 필요해서 분리했습니다.
진짜진짜 대표적인 것들만 적은 거고 사실상 거의 모든 공학 분야와 다 연관이 됩니다.
1. 성능 모델링 엔지니어
물론 개발을 할 때에 성능을 신경써야겠지만, 성능에 영향을 주는 요소가 아주 low-level부터 아주 high-level까지 굉장히 다양하기 때문에 성능 분석, 성능 개선 자체도 전문가가 필요합니다. 이러한 일을 하는 엔지니어를 말합니다.
2. 보안 엔지니어
보안 관련 솔루션을 개발하는 백엔드 개발자 말고도, 직접 보안 체계를 뚫거나 뚫리지 않게 감시하고 이와 관련된 프로그래밍을하는 사람들입니다. 보기만 하면 멋있긴 한데 듣기까지 해보면 생각보다 노가다 잡무가 많습니다. + 암호 쪽을 하려면 수학 계열이라고 보면 됩니다. 많은 학생들이 보안 전문가를 꿈꾸고 들어와서 다른 일을 하러 가는 경우가 더 많습니다.
3. 그래픽스 엔지니어
C/C++ 프로그래밍 + 3D 관련 기술 스택 + 하드웨어 지식 + 수학을 요구하는 직군입니다. 게임 엔진 엔지니어와 비슷해보이는 부분이 있는데 사실입니다. 하지만 게임에 국한된 것이 아니고, 3D 모델링을 필요로 하는 응용 소프트웨어를 직접 개발하거나, 3D 모델링을 위한 기반 기술 개발, 3D 모델링 과정 자체를 최적화하는 일 등을 합니다.
4. 컴퓨터 비전 엔지니어
컴퓨터를 이용하여 2D 이미지나 영상 데이터를 인식하고 패턴 분석 등을 하는 직군입니다. 이미지를 자동 보정하는기술에 무엇이 필요할 지 생각해보면 컴퓨터 비전이 어떤 것인지 어느 정도 감이 올 것입니다. 그외에도 사이트에 업로드된 이미지 중에 불법 성인 이미지 등을 탐지한다던가, 저화질을 고화질로 업스케일링한다던가 하는 기술도 대표적인 컴퓨터 비전의 영역입니다. 컴퓨터 비전 특성 상 ML 기술 접목이 굉장히 잘 되는 편이기 때문에, 이와 관련해서 최근 많은 성과가 있습니다. 이제는 신경망을 이용한 이미지 생성, 자동 채색 등을 시도하고 있습니다.
5. 알고리즘 트레이더
알고리즘으로 포트폴리오를 구성하고 등락을 예측하는 분야입니다. 저는 알못이라 적을게 없네요.
6. 의료 IT 및 의료 AI
의학 관련 프로그램이나 데이터 처리 기술, 인공지능 서비스 등을 개발하는 분야입니다. 사실 이것도 IT 서비스 계열이기는 한데... 일단 의료 AI는 그 목적이 의사의 대체가 아니라 보조이고, 병원과 의사가 사용자입니다. CT/MRI 이미지 처리, 환자 예후 질병 예측 등 실무와 관련이 깊은 쪽도 있고, 전반적인 의료 데이터를 다루는 쪽도 있습니다.
7. 생명정보
단백질 구조 예측, 유전자 유사도 측정 등등 생명공학에는 컴퓨터로 해야 하는 일이 굉장히 많은데 이쪽을 생명정보학이라고 합니다. 전통적으로 생명공학/컴퓨터공학 출신자들이 서로 분야를 넘나들며 많이 해왔습니다. 알고리즘 쪽 성격이 강해서, 알고리즘 다루는 연구실들에서 많이 관여합니다.
<Data/ML 계열>
최근들어 각광받고 있는 분야로, 빅데이터나 인공지능이라고 하면 이쪽을 보시면 되겠습니다. 기본적으로 학사만으로는 기반을 탄탄하게 다지기 힘들어 최소 석사급, 권장 박사급이라고들 하는 분야입니다. 하지만 학사 출신으로 데이터나 인공지능을 하는 사람들도 있습니다. 어차피 필요하면 회사에서 업무를 하다가 학교로 돌아가 석사를 따고 오는 것도 가능하니까요. 석사/박사라고 해도 막 쉬운 길은 아닙니다. (IT계열이 다 그렇긴 하지만 특히) ML 분야가 지금은 수요에 비해 공급이 부족하기는 하지만, 앞으로 인력이 점점 충원되면서 허들이 높아질 것으로 생각됩니다.
여기의 4가지 구분은 명확한 구분은 아닙니다. 예를 들어 외국에서 데이터 사이언티스트라고 하면 ML하는 사람인 경우가 많습니다. 부르는 명칭은 얼마든지 뒤섞일 수 있으니, 그보다는 하는 일이 어떻게 나뉘는지를 살펴보면 되겠습니다.
1. 데이터 사이언티스트
데이터로부터 의미나 관계를 추출해내는 일을 하는 직군입니다. 기존의 데이터 분석은 다소 정량 분석보다 정성 분석에 치중해 있었고, 문과적 성향이나 통계학과 기반을 가진 데이터/비즈니스 애널리스트에 의해 이루어졌습니다. 허나 빅데이터라 불릴 정도로 다양한 데이터의 양이 증가하고 밀도가 낮아진 지금. 데이터를 정량적으로+기계학습으로 다루는 능력이 중요해졌습니다. 데이터 사이언티스트는 수학, 통계학, 컴퓨터공학의 기반을 두루 가지고, 전통적인 데이터의 인과/상관 관계 분석 능력에 더해 빅쿼리 등을 이용한 빅데이터 분석 능력, 머신러닝을 이용한 데이터 예측 등을 합니다. 데이터를 이과의 방식으로 처리해서 문과가 이해할 수 있게 만든다고 보면 됩니다.
간단한 예를 들어봅시다. IT시대에 분석의 대상이 되는 데이터는 수많은 사용자들의 검색 기록이나 구매 기록, 접속 패턴 등이겠죠? 이를 바탕으로 특정 서비스에서 재구매율, 재접속율 등을 예측하거나 추천 상품을 무엇을 띄워야할 지 등을 판단하는 것입니다. 검색 엔진이나 유튜브/넷플릭스의 추천 알고리즘 등 데이터 사이언티스트를 필요로 하는 분야는 어마어마합니다.
2. 데이터 엔지니어
데이터 사이언티스트가 다루는 깨끗한 데이터를 수집하고 가공하거나 이를 위한 플랫폼을 구축하는 일을 하는 직군입니다. 웹에 저장된 로그를 긁는 것이 간단해보일 수도 있지만, 데이터의 용량이 어마어마해지면서 이게 쉬운 일이 아니게 되었습니다. 이른바 빅데이터의 시대가 되었으니까요.
대부분의 데이터는 예쁘지 않습니다. 예를 들어 텍스트 정보, 음성 정보, 이미지 정보, 동영상 정보 등은 다양한 포맷과 크기(엄청난 용량)를 가지고 있기 때문에 각각 상황에 맞게 데이터를 처리해주어야 합니다. 의료 분야, 과학 연구 분야와 관련된 데이터는 훨씬 엉망진창입니다.이를 잘 처리하기 위해서는 당연히 각각에 관한 도메인 지식도 필요합니다. 때문에 데이터 엔지니어링은 다양한 분야에 관한 (생각보다 깊은) 지식, 그에 더해 탄탄한 CS 전공 지식과 프로그래밍 능력, 최적화 능력, 근본적인 문제 해결 능력을 요구합니다.
3. 머신러닝 사이언티스트
ML 기반 기술 쪽에 치중해 일하는 연구원입니다. 인공지능 기술은 산업에서도 핵심이 되기 때문에 사내 연구조직을 운용하는 경우가 많은데, 여기서 대장인 사람들입니다. 연구 능력이 가장 중요하기 때문에 데이터/머신러닝 사이언티스트는 기본적으로 박사급입니다.
의외로 인공지능은 프로그래밍보다는 머신러닝 분야에 관한 능력과 수학/통계 기반을 요구합니다. 머신러닝은 인공지능 중에서도 '학습'을 자동화하는 것입니다. 학습에 필요한 것은 '데이터'이고, 데이터를 먹어서 똑똑해지는 것은 '모델'입니다. 모델이 하는 일은 입력 데이터로부터 데이터 '분류'나 '짝짓기', 유사한/다음 순간의 데이터 '생성' 또는 다음에 할 '행동'을 내놓는 것입니다. 데이터의 영역이나 제약사항 등에 따라 어떻게 새로운 모델을 설계하고, 그에 맞추어 어떻게 데이터를 전처리할 것인가가 중요한데, 머신러닝 사이언티스트가 이를 판단하고 수행하는 일을 합니다. 딥러닝은 다양한 머신러닝 기법 중에서, 엄청난 데이터와 계산 자원을 때려넣을 수 있을 때의 특수한, 그렇지만 굉장히 잘 먹히는 케이스를 다루는 것이라고 보면 됩니다.
4. 머신러닝 엔지니어
머신러닝 사이언티스트와 비슷하지만, 기반 기술을 새로 개발하기보다 있는 기술(연구실 환경에서나 동작하는)을 바탕으로 실제 산업에서 이용할 수 있는 딥러닝 네트워크 모델을 설계 및 구현하고 테스트하고 때로는 제품화하기 위해 필요한 튜닝을 하는 연구원입니다. 엣지 디바이스에서의 딥러닝을 실현하는 일도 합니다. 딥러닝은 학습에서 대량의 데이터 통신과 계산 능력을 필요로 하기 때문에, GPU를 많이 이용합니다. 그래서 때로는 GPGPU 능력이 필요하기도 합니다.
회사의 성격에 따라 파이썬 코딩 정도만 하는 경우도 있고, 저처럼 다양한 기술 스택을 이용하는 경우도 있습니다. 그에 따라 필요한 CS기반 역량이 달라지게 됩니다. 근데 저는 좀 심하게 많이 하는 것 같아요. 점차 복잡한 다른 잡무는 아마 MLOps쪽으로 이양될 것이기 때문에 (1) 다양한 기기 환경에서 (2) 실제 산업에서 활용될 수 있는 모델의 설계 및 학습이 주된 일이 될것으로 생각됩니다. 연구 결과를 기반으로 모델을 설계하고 변형하려면 논문 트렌드를 꿰고 있어야 하기 때문에, 학부 수준으로는 힘들고 석사급은 되어야 합니다.
=================================================
아래는 이미지 라이센스입니다.
License - Web
아래는 이미지 라이센스입니다.
License - Web
CC BY-NC-ND 3.0 with additional clauses
|
Everything including text and images in this project are protected by the copyright laws.
|
You are allowed to use this material for personal use but are not allowed to use it for
|
any other purpose including publishing the images, the project files or the content in the
|
images in any form either digital, non-digital, textual, graphical or written formats.
|
You are allowed to share the links to the repository or the website roadmap.sh but not
|
the content for any sort of usage that involves the content of this repository taken out
|
of the repository and be shared from any other medium including but not limited to blog
|
posts, articles, newsletters, you must get prior consent from the understated.
|
Copyright © 2020 Kamran Ahmed <kamranahmed.se@gmail.com></kamranahmed.se@gmail.com>
|
Please note that I am really flexible with allowing the usage of the content in this
|
repository. If you reach out to me with a brief detail of why and how you would like
|
to use this content, there is a good chance that I will allow you to use it. The reason
|
behind this strictness in the license is to stop the people who have been using these
|
roadmaps in ill manners e.g. ripping people off with suggesting random affiliate links,
|
redistributing these roadmaps just for the sake of monetizing the traffic.
|
License - Game
The class is licensed under the MIT License:
Copyright © 2018 Chris Ohk.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
License - Data
data scientist
GNU GENERAL PUBLIC LICENSE
|
Version 3, 29 June 2007
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
Everyone is permitted to copy and distribute verbatim copies
|
of this license document, but changing it is not allowed.
|
Preamble
|
The GNU General Public License is a free, copyleft license for
|
software and other kinds of works.
|
data engineer
[출처] IT계열 직군 소개 (포만한 수학 연구소) | 작성자 Wabu대표
'참고 자료 모음' 카테고리의 다른 글
[펌글] 초보자 분들이 무료로 공부하기 좋은 곳 (0) | 2025.03.24 |
---|---|
[펌글] 프로그래밍 입문자들에게 주는 학습 가이드와 조언 (0) | 2025.03.23 |
[펌글] 프로그래밍 독학 커리큘럼 (0) | 2025.03.23 |
[펌글] 프로그래머 입문 서적 by dlbo (0) | 2025.03.23 |
[펌글] 코딩으로 몸값 올리는 조건 (0) | 2025.03.23 |