3. Modern Web Development
✅ Modern Web System Architecture
웹서비스의 복잡성 증가
- User Interaction 의 중요성 증가
- 사용자 수, 데이터의 양 증가
이전에 겪지 못한 두 가지 문제
System Architecture 발전
- Frontend 서버 / Backend 서버 분리
- Backend API 서버의 세분화
- 데이터 요청 분산 처리 (API Gateway)
✅ Modern Web Development Team
📌 Product
Product manager(기획자)
- 개발하고자 하는 서비스를 정의하고 기획하는 역할을 담당하는 직군
- 우리나라에서는 PM 이 개발자의 상사 같은 지위를 가지고 있는 곳이 많은데, 미국 에서는 그렇지 않다
- PM 과 개발자는 담당하는 일이 다른 팀원 이지 서로 상하관계가 아니다
Designer
- 웹 시스템 개발에는 UI(User Interface) 및 UX (User Experience) 를 구현하는 역할을 담당
- 사용자가 직접 경험하고 사용하는 서비스를 눈에 보기 좋게, 사용하기 편리하게 디자인하는 역할
Scrum Master / Project Manager
- 프로젝트의 일정 및 출시 관리를 담당하는 역할
- Scrum 개발론이 개발팀 에서 널리 사용 됨에 따라 scrum process 를 관리하고 코치하는 직군이 생김
Tester
- 시스템을 테스트하여 검증하는 역할을 담당하는 직군
- QA (Quality Assurance) - 직접 manual testing을 실행하는 직군
- Software Engineer in Test / Test Automation Engineer - Manual testing이 아닌 자동 테스트 시스템을 전문으로 구현하는 개발자
📌 Frontend
Frontend Developer
- HTML, CSS, JavaScript 로 프론트엔드 시스템을 구현하는 역할
- 사용자와 가장 밀접하게 연결되어 있는 개발자
Publisher
- HTML, CSS 만 담당하는 한국만의 고유 직군
- 점차 없어지는 추세
📌 Backend
Backend Developer
- 백엔드 시스템을 개발하는 역할
- Backend 개발자들도 크게 2가지로 나뉨
- Backend 에서 좀더 앞 쪽을 담당하는 (즉 API 개발을 담당하는) 개발자
- Backend에서도 완전 뒤쪽, 즉 데이터 수집, 분석, 관리 등의 데이터 관련 시스템을 개발하는 개발자
- (경력이 높아질 수록 좀 더 난이도가 있는 뒷 부분에 해당하는 시스템을 많이 구현.) → DevOps
Full Stack Developer
- Frontend 와 Backend 를 모두 개발하는 개발자를 말합니다.
- Node.js 를 통해 자바스크립트로 프론트, 백 둘 다 개발이 가능해지면서 풀스택 개발자 증가하고 있습니다.
- 둘다 한다고 하니 멋있어 보이지만 개발 입문자는 추천하지는 않습니다.
- 요즘 기술은 너무 발전해있기 때문에, 한 분야를 깊게 파는것이 중요합니다. 여러 분야를 넓게 하는 것은 나름의 장점이 있지만, 결국에 전문가가 되기는 어려운 면이 있습니다.
- 선택과 집중. 한 분야의 전문가가 된 후에 필요한 정도로 나머지 분야에 대해 학습하는 것을 추천합니다.
📌 Dev System / Data
DevOps
- “Development”와 “Operation”의 합성어로, 직군이라기 보다는 개발 분야에서 나타나는 문화 혹은 추세를 말한다
- 데브옵스는 이름 그대로 개발자가 시스템 개발뿐만 아니라 시스템 운영(operation)까지 담당하는 것을 이야기
- AWS 등의 클라우드 서비스가 발달함에 따라 서버 구축 및 운영 등의 시스템 인프라스트럭처 구축과 관리를 하는 데 있어서 실제 하드웨어 서버를 직접 다루지 않다도 되게 되었다
- 자연스럽게 시스템 운영 담당자가 따로 필요없이 개발자들이 직접 시스템 인프라스트럭처를 구현하는 추세가 널리 퍼지게 된다
SysOps
- 시스템 인프라스트럭처(system infrastructure)의 구현과 관리 및 운영을 담당하는 직군입니다. DevOps와 다르게 실제 하드웨어를 다룰 수 있는 직군
- 서버를 직접 설치하고 운영시키며, 그 외 물리적인 네트워크 구축 및 운영 등 시스템 인프라스트럭처 운영에 필요한 모든 부분을 담당
- 주로 직접 데이터 센터(data center)를 사용하여 시스템을 운영하는 회사에 필요한 직군
- AWS 등의 클라우드 서비스가 널리 사용되며 데브옵스가 발전함에 따라 예전보다는 시스옵스 팀에 대한 수요가 많이 줄어들고 있는 추세
- 실제로 넷플릭스 같은 대기업도 시스템 인프라스트럭처를 전부 AWS 상에서 구현해 놓았기 때문에 별도로 시스옵스팀이 없는 것으로 알려져 있다
Data Scienist
- 데이터 사이언티스트는 데이터 분석에 필요한 알고리즘과 모델링의 구현을 담당하는 직군
- 웹 시스템의 규모가 커지고 빅데이터 기술이 발달하면서 많은 기업들이 방대한 양의 데이터를 수집할 수 있는 능력이 생겼다
- 그리고 이 방대한 양의 데이터를 분석하여 고객들의 니즈(needs)를 더 이해하고 파악함으로써 더 나은 서비스를 제공하고자 하는 기업들이 늘어나게 되었다
- 그에 따라 많은 양의 데이터를 분석해서 새로운 정보와 가치를 만들어 낼 수 있는 데이터 사이언티스트라는 직군 탄생
- 데이터 사이언티스트들은 대부분 수학, 통계학, 물리학 등의 분야에서 석사 이상의 학위를 가지고 있고, 박사 학위를 가지고 있는 사람도 다수
Data Engineer
- 데이터 엔지니어는 데이터 사이언티스트들과 함께 일하는 직군
- 주로 데이터 사이언티스트가 데이터를 분석할 수 있도록 데이터를 추출하고 가공해서 저장하는 일련의 파이프라인 시스템을 구현하는 역할을 담당
4. 정리
- 인터넷(Internet)이란 전 세계의 컴퓨터가 서로 연결되어 정보를 교환할 수 있는 하나의 거대한 컴퓨터 통신망이다.
- 웹(Web)이란 인터넷 네트워크를 이용하여 통신되는 정보의 집합이다.
- 1세대 웹의 특징은 웹 서버가 HTML 페이지 전체와 CSS를 클라이언트에 전송하는 구조다.
- 2세대 웹의 특징은 동일한 서버에서 HTML, CSS, Javascript, 그리고 Data 모두가 클라이언트로 전송하는 구조다.
- 3세대 웹의 특징은 SPA(Single Page Application)의 등장으로 단일 HTML 페이지와 메인 Javascript 파일로 HTML 요소 생성부터 모든 페이지 및 기능을 동적으로 처리할 수 있게 됐다.
- 현대 웹 시스템 아키텍처에서는 동시 접속자 수와 데이터 양의 증가로 Micro Service Architecture 구조를 갖는다.
- 현대 웹 시스템 개발에는 PM, Designer, Scrum Master, Tester, Frontend Developer, Backend Developer, Full Stack Developer, DevOps, SysOps, Data Sientist, Data Engineer 직군이 필요하다.