[오늘의 배움] 041 웹 시스템 발전, 현대 개발팀 구조

이상민·2021년 2월 5일
0

[오늘의 배움]

목록 보기
44/70
post-thumbnail

1. Conda

1-1. Venv vs Conda

  • Venv : 파이썬3에 내장된 가상 환경 기능

  • Conda : 패키지 매니저와 개발 환경 매니저 기능을 제공하는 개발 툴. 컨티넘애널리틱스에서 만든 파이썬 배포판(아나콘다)에 포함

Conda는 Venv에 비해 가상 환경들을 관리하는 측면에서 다양한 편의 기능을 제공한다. 콘다만 이용하기 위해 아나콘다 전체를 설치할 필요 없이 미니콘다만 설치해 사용할 수 있다.


2. 웹 시스템의 발전

2-1. 초기 웹

  • 웹 서버의 역할은 단순히 브라우저가 요청하는 페이지를 보내는 것
  • 정적 페이지만 보여주는 구조

2-2. 자바스크립트의 발전

  • 사용자 인터렉션이 중요해지며 자바스크립트의 역할 증가
  • 웹 서버가 HTML와 자바스크립트 브라우저에 전송, 브라우저는 자바스크립트를 실행해 동적 기능 제공
  • 전체 페이지 로드 없이 사용자 input 동적으로 처리와 데이터 제공 가능
  • 여전히 API 개념이 널리 사용x, 동일한 서버에서 HTML/자바스크립트/데이터 전송

Ajax : 자바스크립트를 통해 비동기적으로 서버와 브라우저가 데이터를 주고 받는 방식

2-3. 프론트엔드/백엔드 서버의 구분

  • 웹이 더욱 동적으로 발전하며 자바스크립트의 역할 증대
  • HTML도 자바스크립트 코드로 직접 생성
  • 자바스크립트가 주가 되어 HTML 생성부터 프론트엔드 모든 부분 구현
  • 이전 부분적으로 동적이었던 웹이 전체적으로 동적으로 변화
  • SPA 방식 프론트엔드 개발이 인기를 얻어 브라우저와 서버의 통신은 데이터 전송/생성/수정이 위주
    (페이지를 렌더링하는 데 필요한 자바스크립트는 최초 통신에서 한 번에 받아 서버와 데이터만 송수신)
  • 프론트엔드 서버(렌더링에 필요한 파일 전송)와 백엔드 서버(데이터 생성 및 전송)가 구분

2-4. 프론트엔드/백엔드 개발자의 구분

  • 프론트엔드 개발자 역할 : HTML/CSS/Js를 이용해 UI, UX 구현
  • 백엔드 개발자 역할 : 프론트엔드 시스템과 데이터 실시간으로 송수신

3. 현대 웹 시스템의 구조 및 아키텍쳐

  • 시스템 규모/동시요청/데이터 규모 기하학적으로 증가
  • API 시스템이 처리하는 동시 요청이 증가로 MSA 같은 새로운 아키텍쳐 개념 발전, API 서버 규모 증가와 세분화
  • 분석할 데이터 증가로 ETL/Data Pipeline 시스템 발전, Hadoop등 대용량 분석 프레임워크 발달
  • 최근엔 머신러닝과 AI 시스템도 활용
  • 현대 백엔드 개발자 영역 : 백엔드 API 시스템, Data Pipeline 시스템, 머신러닝 시스템, 빅데이터 분석 시스템

MSA : Micro Service Architecture
ETL : Extract, Transfer, Load


4. 현대 개발팀의 구조

4-1. 개발팀 구성

  • 기획자
  • 디자이너
  • 프론트엔드 개발자
  • 백엔드 개발자
  • 데브옵스
  • 풀스택 개발자
  • 시스옵스
  • 데이터 사이언티스트
  • 테스터
  • 스크럼 마스터

4-2. 기획자

= PM

  • 개발하고자 하는 서비스 정의/기획
  • 시스템의 가치 정의, 세세한 기능 기획 및 정의, 고객 피드백 반영하며 기능 정의와 기획 발전

4-3. 디자이너

  • 시스템의 UI와 UX 디자인

4-4. 프론트엔드 개발자

  • 프론트엔드 시스템 구현
  1. HTML, CSS 부분만 담당 : 퍼블리셔
  2. HTML, CSS, Js 모두 담당 : 프론트엔드 개발자

4-5. 백엔드 개발자

  • 백엔드 시스템 개발
  1. 백엔드 시스템에서 앞쪽 담당 : API 시스템 개발자
  2. 백엔드 시스템에서 뒤쪽 담당 : 데이터 관련 시스템 개발자

4-6. 데브옵스

= 개발과 운영의 합성어

  • 시스템 개발뿐만 아니라 시스템 운영 담당
  • 클라우드 서비스 발달로 하드웨어 구축과 관리가 줄어 개발자가 직접 시스템 인프라를 구현하며 생성
  • 시스템 운영 외에도 빌드, 테스트, 배포 등을 자동화하여 효율적인 개발 환경을 구축하는 역할도 담당
  • 최근 IAC 개념 발달로 전체적 시스템 인프라 구현 및 관리 자동화

IAC : Infrastructure As Code. 인프라 생성/운영 작업을 코드로 구현하여 코드 실행시켜 인프라 구축

4-7. 풀스택 개발자

  • 프론트엔드/백엔드 둘 다 가능한 개발자

4-8. 시스옵스

  • 시스템 인프라 구현/관리/ 운영 담당
  • 데브옵스와 달리 실제 하드웨어를 다루는 직군
  • 서버 설치, 물리적 네트워크 구축/운영 등 시스템 인프라 운영에 필요한 모든 부분 담당
  • 클라우드 서비스 발전으로 수요 감소 중

4-9. 데이터 사이언티스트

  • 데이터 분석에 필요한 알고리즘과 모델링 구현 담당
  • 수학, 통계학, 물리학 등의 분야 지식 필요

4-10. 데이터 엔지니어

  • 데이터 사이언티스트가 데이터를 분석할 수 있도록 데이터를 정리하고 정석화 시키는 시스템을 구현하는 역할

4-11 테스터

  • 시스템을 테스트하여 검증하는 역할 담당
  1. QA 테스터 : 메뉴얼 테스팅 담당
  2. 테스트 자동화 시스템 구현 테스터

4-12. 스크럼 마스터

  • 개발팀들이 스크럼을 제대로 사용할 수 있도록 코치하고 이끄는 역할 담당
profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글