웹서비스의 역사와 발전

Kim Chioh·2021년 1월 12일
0
post-thumbnail
  • 인터넷과 웹이 어떠한 형태로 출현 했는지 설명할 수 있다.
  • 1세대, 2세대, 3세대 웹의 발전과 각각의 특징에 대해 설명할 수 있다.
  • Frontend, Backend 가 언제부터 나뉘게 되었는지, 각각의 역할에 대해 이해한다.
  • 현대 개발팀을 구성하는 여러 직군에 대해서 이해한다.

1.1 인터넷과 웹의 출현

-2. 인터넷의 출현

    1. Internet
  • 처음에는 군사 목적
    • 핵 공격에도 견딜 수 있는 강인한 통신 시스템 필요 >>> 인터넷
  • 인터넷 → 물리적으로 떨어져 있는 서버와 서버의 연결을 가능하게 해줌.
  • 1990년 WEB 이 출현하며 대중적으로 사용 되기 시작
  • **팀 버너스리** 스위스 유럽입자물리 연구소.
  • **World Wide Web** 이라는 프로그램을 개발
  • info.cern.ch "home of the first website"
  • 우리가 일반적으로 생각하는 인터넷, 인터넷의 대중화는 이렇게 웹이 등장하면서 시작됨.

1-4. 인터넷이 불러온 혁신

  • 가장 큰 혁신 → 유통
  • 닷컴붐(**Dot-com bubble**) (2000년대).
  • 웹 기반의 서비스 시작. 인터넷에 본인들이 만든 SW 를 올려서 판매 시작.
  • 1세대 웹 서비스 → 정적인 사이트(HTML, CSS 가 전부) ex. Yahoo 2000

2. Web System Architecture History


2-1. 1세대 웹 - 전통적인 Web System Architecture. 정적 웹.(no user interaction, no logic)
2-2. 2세대 웹 - User Interaction 의 증가. 동적 웹(자바스크립트)
2-3. 3세대 웹 - SPA(Single Page Application 하나의 html페이지에서 파일로 전체 사이트를 구현) - 구별되기 시작하는 Frontend와 BackendFrontend 서버와 Backend API 서버도 분리(서버가2개!)
2-4. Modern WEB - 규모가 커지기 시작하는 Web System의 발전

  • User Interaction 의 중요성 증가 + 웹 서비스의 복잡성 증가 + 사용자 수, 데이터의 양 증가

  • (ex. Instagram, Twitter. 기능적으로 복잡한 것은 하나도 없지만 사용자와 데이터의 양이 어마어마함.)

  • 이전에 겪지 못한 두 가지 문제 - 1. 동시 접속자 수, 2. 데이터의 양System architecture 의 발전

  • 웹 사이트/서비스들이 엄청나게 발전되고 규모가 커짐에 따라 시스템 구조도 훨씬 더 복잡하고 커지게 된다.

    → Frontend 서버와 Backend 서버의 분리

    1. Backend 는 웹 서비스의 스케일이 엄청나게 커짐에 따라(그리고 분석해야 하는 데이터 양이 엄청나게 늘어남에 따라 ) architecture(시스템 구조)가 굉장히 복잡하게 발전 되며 규모도 엄청나게 커진다.
      • Micro Service Architecture 등의 새로운 architecture 개념의 발전으로 API 서버들이 훨씬 더 세분화 되며 규모가 커짐
      • 분석해야 하는 데이터의 양이 엄청나게 늘어나면서 소위 "Big Data" 분석 시스템이 많은 회사들의 backend 시스템에 도입
      • 데이터를 통해 Insight 를 도출해내는 것이 다음 도전 과제 (ex. 추천 상품, 음악 플레이리스트 추천)
      • 게다가 최근에는 ML(Machine Learning)과 AI 기술의 발달로 많은 회사들이 ML과 AI 시스템도 활용하게 됨으로 backend 시스템은 계속해서 방대해지는 추세
    2. Frontend 는 Node.js 와 React 등의 JavaScript 엔진과 프레임워크/라이브러리의 발달로 웹에서 더 복잡한 기능 구현이 가능 → Node.js 의 발전으로 프론트 개발자가 간단한 백엔드 기능을 직접 구현하는 일도 요즘은 흔함.

3. Modern Development Team 구조


  • Product manager(기획자)
    • 개발하고자 하는 서비스를 정의하고 기획하는 역할을 담당하는 직군
  • Designer
    • UI(User Interface) 및 UX (User Experience)
    • 사용자가 직접 경험하고 사용하는 서비스를 눈에 보기 좋게, 사용하기 편리하게 디자인
  • Frontend Developer
    • HTML, CSS, JavaScript 로 프론트엔드 시스템을 구현하는 역할
    • 사용자와 가장 밀접하게 연결되어 있는 개발자
  • Backend Developer
    • Backend 개발자들도 크게 2가지로 나뉨
      • Backend 에서 좀더 앞 쪽 (즉 API 개발을 담당하는) 개발자.
      • Backend에서도 완전 뒤쪽, 즉 데이터 수집, 분석, 관리 등의 데이터 관련 시스템을 개발하는 개발자.
      • (경력이 높아질 수록 좀 더 난이도가 있는 뒷 부분에 해당하는 시스템을 많이 구현.) → DevOps
  • DevOps (Development Operations)
    • 시스템 개발(Development) 뿐만 아니라 시스템 운영(Operation)까지 담당하는 것
    • 직군 이라기 보다는 개발 분야에서 나타나는 문화나 추세
    • AWS 등의 클라우드 서비스가 발달함에 따라 서버 구축 및 운영 등의 System Infrastructure 관리까지 백엔드 개발자가 직접 구현하는 추세
    • cf) IAC(Infrastructure As Code)
    • DevOps 에 대한 수요가 굉장히 높은 편. 개발 능력과 함께 DevOps 능력도 키울 것.
  • SysOps (System Operations)
    • System Infrastructure 의 구현과 관리 및 운영을 담당하는 직군
    • DevOps 와 다르게 실제 하드웨어를 다룰 수 있는 직군
    • Data Center 를 사용하여 시스템을 운영하는 회사에 필요한 직군
    • 직접 데이터 센터에 서버를 구성하지 않고 AWS 같은 클라우드 서비스가 점점 더 많이 쓰이는 추세.
      따로 SysOps 인력을 두지 않고 DevOps 개발자들이 System Infrastructure 를 담당하는 추세.
  • Data Scientist
    • Machine Learning, AI 등의 데이터 분석에 필요한 알고리즘과 모델링의 구현을 담당하는 직군.
    • 많은 양의 데이터를 분석해서 새로운 정보와 가치를 만들어 낼 수 있는 직군
  • Data Engineer
    • Data Scientist 가 데이터를 분석할 수 있도록 데이터를 정리하고 정석화 시키는 시스템을 구현하는 역할을 담당
  • Tester
    • 시스템을 테스트하여 검증하는 역할을 담당하는 직군
    • QA (Quality Assurance) - 직접 manual testing을 실행
    • Software Engineer in Test / Test Automation Engineer - Manual testing이 아닌 자동 테스트 시스템을 전문으로 구현하는 개발자.
  • Others
    • Full Stack Developer
      • Frontend 와 Backend 를 모두 개발하는 개발자
      • Node.js 를 통해 자바스크립트로 풀스택 개발자 증가.
    • Project Manager
      • 프로젝트의 일정 및 출시 관리를 담당하는 역할
    • Scrum Master
      • Scrum process 를 관리하고 코치하는 직군이 생김.
profile
Just do what to do

0개의 댓글