프론트엔드frontend와 백엔드backend라는 구분이 있다는 걸 알았다.
클라이언트client 쪽, 쉽게 말해 보이는 부분을 예쁘게 만드는 분야를 프론트엔드,
서버server 쪽, 보이지 않는 부분을 완벽하게 관리하는 분야를 백엔드라고 하더라.
여기에 더해 데브옵스DevOps라는 분야도 있다고 하더라.
프론트엔드 개발자는 개발자, 마케터, 디자이너 등에 의해 코드의 수명이 짧아지기 때문에 노력에 비한 실득이 많지 않고, 업무수요가 많다. 다만 프론트엔드는 씬에서 가장 핫하고, 수요가 많다. 물론 백엔드에 비해 상대적으로 커리어적 한계가 있지만, 정말 잘 깎아서 기술적 완성도를 높인다면(블리딩 엣지bleeding edge : 최첨단 기술영역) 백엔드 개발자보다 희소성이 높아진다.
그래서 프론트엔드는 가운데 팀장급이 희귀하고, 주니어와 시니어의 갭차이가 어마어마하다.
백엔드 개발자는 설계를 할 때 지루해하지 않고, 추상화된 개념에 대한 사고능력이 좋아야 한다.
백엔드는 코드의 유통기한이 길고 효용성이 높은 편이므로, 가독성이 좋아야 한다.
기술적 완성도를 높여 전문성을 향상시켜 놓으면, 그만큼의 리턴이 돌아오는 분야이기도 하다.
다만, 프론트엔드 개발자에 비해 주목할 만한 희소성의 성장은 이루어지지 않고, 꾸준하며 안정된 수요곡선을 그린다. 그래서 백엔드는 낙폭이 별로 크지 않고, 임금이 높게 형성되어 있다.
프론트엔드는 어차피 역사가 그렇게 길지 않기 때문에(역사랄게 없는 편), 다양한 분야를 배워보고 적용해보는 경우가 많다.
그래서 프론트엔드는 어쩔 수 없이 배움의 형태가 인스턴스식인 경우가 많다.
개발분야가 끊임없이 배움을 이어나가야 하는 분야가 맞지만, 프론트엔드는 유독 더한 이유이다.
데브옵스의 개념은 어떤 요구사항을 효율적으로 만족시키기 위해서 문화culture를 가지고, 일을 자동화automation를 시키고, 모든 지표와 과정을 측정measurement하고, 결과를 공유sharing하고, 내용을 축적file up & pile up하는 기술적 방법론이라 한다.
데브옵스는 소프트스킬과 테크니컬스킬, 모두 뛰어나야 한다.
데브옵스 엔지니어는 항상 매사 다양한 관점에서 문제를 바라보고, 생각하고, 결정해서, 행동하고, 기록해야 한다.
반드시 결정에 대한 기반자료가 있는 상태에서 예측적 결정을 내려야 한다.
그러기 위해서는 엔지니어링이 생활화가 되어야만 한다.
고민은 짧게 행동은 빨리, 일단 일 주일, 그리고 한 달을 해보면 알 수 있다.
나는 지금 고민과 걱정으로 나를 가두기보다 한 걸음 한 걸음 힘주어 내딛을 때인 것 같다.
프론트엔드 : 앱/웹 클라이언트에서 보이는 부분을 만들고 관리하는 개발분야
백엔드 : 서버와 데이터베이스에서 동작하는 부분을 만들고 관리하는 개발분야(어플리케이션, 캐쉬, 배포)
데브옵스 : 백엔드 + 운영담당하는 분야 (= SRE(Site Reliability Engineering)) (서버 스케일링 및 위기관리)
임베디드 : 하드웨어랑 직접 대화하는 개발분야
QA엔지니어 : 자동화 된 테스트 케이스 만들고 기능이 깨지지 않는지 점검하고 관리하는 분야
데이터엔지니어 : 방대한 데이터(BI) 양을 추출하고 관리하고 분석
러신러닝 : 인풋/아웃풋 모델을 만들고, 서빙 및 유지보수 개발분야