개발자 직군

ㅈㄱㄴ

Frontend

  • 프론트엔드는 웹 사이트 중 사용자가 직접 상호작용을 하게 되는 부분입니다.
  • 프론트엔드 개발자는 웹 사이트에서 사용자가 직접 경험하는 부분과 그 경험의 아키텍처를 담당합니다.
  • HTML, CSS, JavaScript 활용에 능숙해야 하며, 컨텐츠를 유연하게 보여주기 위해 Bootstrap, React, Vue, Angular 등과 같은 프레임워크에도 익숙해야 합니다.
  • 프론트엔드 개발자에게 필요한 역량은 다음과 같습니다.
    • 인터넷/네트워크 및 보안
    • HTML, CSS, JavaScript
    • 버전 관리
    • 패키지 매니저
    • 빌드 도구
    • 프레임워크(React, Angular, Vue 등)
    • 웹 컴포넌트
    • CSS 프레임워크
    • 테스트 프레임워크(Jest 등)

Backend

  • 백엔드는 서버, 응용 프로그램 및 데이터베이스로 구성됩니다.
  • 백엔드 개발자는 백엔드의 구성요소들이 작동할 수 있게 기술을 만들고 유지하는 일을 합니다.
  • 서버, 응용 프로그램, 데이터베이스가 서로 통신할 수 있도록 PHP, Ruby, Python, Java, JavaScript, .Net 등과 같은 서버 측 언어를 활용하여 응용 프로그램을 만듭니다.
  • 데이터를 검색, 저장 또는 변경하고 이를 프론트엔드 코드로 사용자에게 제공하기 위해서 MySQL, Oracle, SQL Server를 사용합니다.
  • 클라이언트와의 통신을 위해 API를 이용하는데, 이 API를 설계 하는 능력이 필요합니다.
  • Spring, Django, PHP 등의 프레임워크 경험, SVN/CVS/Git과 같은 버전 제어 소프트웨어 사용 경험, 개발 및 배포 시스템으로서의 Linux 사용 경험이 필요합니다.
  • 백엔드 개발자에게 필요한 역량은 다음과 같습니다.
    • 기초적인 프론트엔드 지식
    • 인터넷/네트워크 및 보안
    • 운영체제 및 일반적인 지식
    • 프로그래밍 언어
    • 버전 관리
    • 관계형 데이터베이스/NoSQL 데이터베이스 및 데이터베이스 지식
    • API(REST, JSON APIs, SOAP 등)
    • 캐싱
    • 테스트 및 CI/CD
    • 개발과 설계 원칙, 아키텍처 패턴

QA

  • 라인, 카카오
  • QA는 어떤 서비스를 배포하기 위해 버그를 찾고 리포팅하는 역할입니다.
  • 그 외에도 품질 개선, 커뮤니케이션과 가이드, 보조자, 분석과 관리, 피드백과 개선 등의 역할도 맡습니다.
  • 단순 테스터와는 다르게 많은 과정과 절차에서 다양한 역할을 담당합니다.
  • QA 엔지니어가 되기 위해 갖추어야 하는 역량은 다음과 같습니다.
    • 기획 분석 단계에서 수행하는 데이터 수집과 수집된 데이터를 해석할 수 있는 역량
    • 서비스 아키텍처에 대한 이해와 코드를 이해하는 역량(협업 단계에서 개발 멤버와 협업할 수 있는 최소한의 기술)
    • 프로세스 개선과 관련된 테스트 관리 역량
    • 각 담당자들과 원활히 소통할 수 있는 커뮤니케이션 역량

SI

  • SI는 System Integration의 약자로, 시스템 개발을 의미합니다. 어떤 기업에서 필요로 하는 프로그램을 수주받아 만들어주는 역할을 합니다.
  • SI에서는 남이 쓸 프로그램을 만들고, 보통 유지보수는 하지 않습니다. ‘기능 목록의 개수’를 늘리는 것이 목표입니다.
    • 운영과 유지보수는 SM(System Management)에서 담당합니다. SM은 시스템에 대한 전반적인 운영을 담당하며, 보통 전산실에서 해당 시스템을 오랫동안 담당합니다. 오류 수정, 기능 개선, 기능 추가, 데이터 제공, 시스템 안정화를 담당합니다.
  • SI는 안정성을 중시합니다. 따라서 주로 Java(Spring) + 안정성 높은 DB(RBDMS 한정) + 좋은 쿼리 작성 능력 + 안정된 프론트엔드 솔루션을 중요시 합니다.
  • 시스템 초기 단계부터 완료까지 구축하는 경험을 쌓을 수 있습니다. 또, 다양한 분야와 기술을 경험할 수 있습니다.

Data Engineer

  • 데이터 엔지니어는 데이터 영역을 전문으로 담당하는 소프트웨어 엔지니어입니다.
  • 업무나 사용 기술이 조금씩 차이가 있을 수는 있지만, 사업에 필요한 데이터를 잘 분석할 수 있도록 데이터 시스템을 관리하는 공통된 업무를 합니다.
  • 최근에는 엄청난 양을 바탕으로 한 데이터를 활용하여 이득을 보는 경우가 많아졌고, 클라우드 환경의 활용가치가 높아졌기 때문에 기존의 데이터베이스와 전통적 분석 방식을 벗어나 ‘빅데이터’를 다루는 새로운 분야가 생겼습니다.
  • 데이터 엔지니어는 이러한 빅데이터 환경에서 데이터 인프라를 구축하고 관리하는 데에 특화된 직무입니다.
  • 데이터 엔지니어는 데이터 파이프라인(데이터의 수집, 저장, 가공_ETL/ELT)을 구축 및 관리하고 그것을 분석 및 시각화합니다.
  • 데이터 엔지니어에게 필요한 역량은 다음과 같습니다.
    • 데이터 파이프라인에 필요한 기술
    • 프로그래밍 능력
    • 데이터 분석 능력(쿼리)
    • 시각화 기술
    • 소통 능력(데이터 분석가, 과학자, 개발자 등과의 협업)
    • 도메인에 대한 깊은 이해

DevOps

  • DevOps는 개발과 운영의 합성어로, 개발과 운영의 경계를 허물고 하나의 팀으로서 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 뜻합니다.
  • 속도가 느리고 수동으로 수행되던 프로세스를 자동화하고, 애플리케이션을 안정적으로 빠르게 운영하고 개선하는 데 도움이 되는 기술 스택과 도구를 사용합니다.
  • 기획-개발-빌드-테스트-배포-모니터링-산출물-KnowledgeBase를 묶어 사용할 수 있습니다.
  • 단순히 두 팀을 합치는 것은 DevOps가 아닙니다. 개발에서 운영까지 매끄럽게 진행할 수 있도록 각각 다른 기술을 가지고 있는 사람들을 모아 팀을 만드는 것이 DevOps입니다. 한쪽이 다른 쪽의 업무도 하는 것이 아니라, 두 팀 사이에서 지속적인 전달과 지속적인 통합을 진행할 수 있도록 DevOps 환경을 조성하는 것입니다.
  • DevOps를 적용하게 되면 속도 향상, 빠른 배포, 협업 강화, 품질 향상, 보안 등의 장점을 얻을 수 있습니다.
  • DevOps는 지속적 통합, 지속적 전달, 마이크로 서비스, 코드형 인프라, 모니터링 및 로깅, 협업 등의 방법으로 이루어집니다.
  • DevOps에게 필요한 역량은 다음과 같습니다.
    • 프로그래밍 언어
    • 다양한 OS 개념 이해
    • 서버 관리 및 터미널 활용 방법
    • 네트워크, 보안 및 프로토콜
    • 웹 서버
    • Infrastructure as Code
    • CI/CD 도구
    • SW와 인프라 모니터링 방법
    • 클라우드 제공업체 및 디자인 패턴

Imbedded

  • 임베디드 시스템을 개발합니다.
    • 임베디드 시스템은 기계나 기타 제어가 필요한 시스템이나 특정 기능을 수행하는 컴퓨터 시스템으로, 기기의 전체 장치의 일부분으로 구성되고 제어가 필요한 시스템을 위한 지휘자 역할을 하는 컴퓨터 시스템입니다.
  • 낸드 메모리에 들어가 있는 펌웨어, 기계(자동차) 시스템 제어를 위한 미들웨어, 무기 조작 시스템, 스마트 팩토리 시스템 개발 등의 업무를 합니다.
  • 다음과 같은 프로세스를 거쳐 작업합니다.
    1. 기획 및 분석
    2. 설계
    3. 개발
    4. 유지보수
  • 다음과 같은 세부 분야가 존재합니다. 모든 분야에 대해 공부가 필요합니다.
    • Firmware 개발: SW의 처리 순서를 ROM에 고정시켜 HW를 이용하는 구조를 가진 프로그램을 개발
    • Kernel 개발: Linux 혹은 Unix 시스템의 커널을 포팅함으로써 조건에 맞게 커널의 기능을 수행하고 설계된 동작을 사용할 수 있도록 함
    • 시스템 및 플랫폼 개발: 데이터 센터 또는 기업에서 기억장치 제어를 위한 SW 개발(시스템과 연결되어 있는 물리적인 플래시 메모리 내의 데이터가 처리되는 과정 또는 네트워크 동신을 위해 driver단의 모듈 개발)
  • 주로 C나 C++를 사용합니다.

참고