세대별 웹 서비스 특징

LSA·2022년 2월 14일
0

웹개발 기본 상식

목록 보기
1/9
post-thumbnail

우리에게 웹이란건 아주 친숙한 매체지만 90년대에만 해도 그렇지 않았습니다.
90년대 이전 출생자 분들은 아주 잘 아시겠죠?

인터넷과 웹의 출현

🌏 Internet

인터넷(Internet)은 사실 1960년대에 군사 목적으로 출현한 정보 통신 시스템입니다.
당시에는 중앙집중적인 통신 시스템을 가지고 있었기에, 중앙이 공격되면 전체가 마비되는 취약점을 가지고 있었습니다.
때문에 핵 공격에도 견딜 수 있는 강인한 통신 시스템을 필요로 하다가, 물리적으로도 떨어져 있는 서버와의 연결을 가능하게 해 주는 인터넷이 개발되었던 것이죠.
이때만 해도 인터넷은 기업이나 연구소, 군대 같은 큰 기관에서 사용되던 고오급 시스템이었다고 합니다.

💻 Web

우리가 익히 알고 있는 '웹사이트'의 기반인 웹은 1990년대에나 되어야 등장합니다.
팀 버너스리가 개발하였으며, 1990년 11월 세계 최초의 웹 브라우저인 Wolrd Wide Web이라는 프로그램이 개발됩니다. (웹사이트의 시작이 www로 시작되는 이유..)

인터넷의 혁신과 1세대 웹 서비스 : 정적 웹

이전에는 소프트웨어 하나를 구입하려면 물리적인 매개체가 필요했습니다.(패미컴이나 CD게임 등을 기억하시나요?)
하지만 인터넷의 등장으로 이러한 유통 과정이 줄어들며 많은 개발자들이 창업을 시작했습니다.
이는 곧 웹 기반의 서비스가 시작되는 것이었고, 본인들이 만든 SW를 인터넷에 올려서 판매를 시작하여 2000년대에는 닷컴붐(Dot-com bubble)이 일어나며 야후, 구글, 아마존 등의 회사가 출현했습니다.
다만 이 때의 웹사이트는 '정보 제공' 이 주 목적이었기 때문에 HTML,CSS가 전부였습니다. 유저의 상호작용도 많이 요구되지 않았고요. 이 시기의 웹사이트는 웹 서버에서 html 파일을 전송받아 브라우저가 해석 후 화면에 그려주는 방식입니다
오픈 초기의 국내 포털 사진을 보면 굉장하네요.
https://photohistory.tistory.com/2323 <<이 곳에서 확인할 수 있습니다!

Javascript와 2세대 웹 서비스 :동적 웹

그리고 javascript의 등장으로 웹사이트에도 빠른 변화의 바람이 붑니다. 웹사이트에서 동적 구현을 담당하는 기능이 늘어남으로서 화면이 많이 다이나믹해지고, 자바스크립트의 역할이 중요해졌습니다. 그만큼 유저 상호작용도 많이 요구되었고요.
웹 서버에서는 html과 javascript를 통해 필요한 데이터를 주고받았습니다.
동일한 서버에서 프론트 영역과 백 영역의 데이터가 동시 전송되어, 둘의 구분이 크게 나뉘지 않았습니다.

3세대 웹 서비스 : SPA

이제 웹 서버가 html 페이지 전체를 클라이언트에게 전송하면서,자바스크립트의 역할이 기존 html이나 css보다 훨씬 중요해지게 되었습니다.
이렇게 자바스크립트가 주축이 되며 Single Page Application이라는 SPA 개념이 확립되었습니다.
기존에는 서버가 매번 페이지 구성에 필요한 모든 요소를 전송했지만 3세대 웹서비스에서부터는 처음에 필요한 파일만 송수신 후, 실시간 데이터만 주고받는 형식이 된 것입니다.

현대 웹

유저 상호작용의 중요성이 증가하고,
웹의 복잡성이 증가하고,
사용자 수/데이터의 양이 폭발적으로 증가하면서
동시 접속자 수(트래픽)과 데이터의 양에 관련한 문제들이 발생했습니다.
이를 해결하기 위해 시스템 구조가 발전하였고, 웹사이트의 FrontendBackend의 서버가 분리됩니다.

  • Frontend: Javascript 엔진과 프레임워크/라이브러리의 발달로 웹에서 더욱 복잡한 기능 구현이 가능해졌다.
  • Backend : API 서버들이 훨씬 더 세분화되며 규모가 커짐. 소위 'Big Data' 분석 시스템이 많은 회사들의 시스템에 도입. 최근에는 Machine Learning과 AI 기술의 발달로 백엔드 시스템은 계속해서 방대해지는 추세이다.

현대의 개발자 직군들은?

현대 개발팀의 일반적인 구조와 구성원들입니다.
제 경험을 토대로 한 짧은 코멘트도 들어갔습니다.

1.Product Manager(기획자)

  • 개발하고자 하는 서비스를 정의하고 기획하는 역할을 담당하는 직군
  • 국내에서는 보통 PM이 최고권력을 가지고 있습니다. (미국은 그렇지 않다네요)

제가 겪거나 본 프로젝트들은 보통 디자이너나 개발자들이 기획 업무를 동시에 맡았어서
'기획자가 필요하다'는 주위 이야기가 떠올라 눈물이 납니다.

2.Designer(디자이너)

  • 웹 시스템 개발에서 UI(User Interface)나 UX(User Experience)를 기획하고 구현하는 역할입니다. 사용자가 직접 경험하고 사용하는 서비스를 눈에 보기 좋고 편리하게 디자인을 합니다.

작은 기업에서는..보통 웹디자이너들도 UI,UX뿐 아니라 그래픽에 관련한 모든 업무(영상,인쇄,인테리어 등)를 담당하곤 합니다.

3. Frontend Developer(프론트엔드 개발자)

  • HTML,CSS,Javascript로 프론트엔드 시스템을 구현합니다.
  • 사용자와 가장 밀접하게 연결된 개발자라고 할 수 있습니다.
  • 국내에는 퍼블리셔(publisher)라고 하는 고유 직군이 있습니다. 쉽게 말해 HTML부터 CSS까지 구조/디자인적인 부분만 담당하는 역할입니다.

저는 디자이너가 퍼블리싱까지 담당하거나 프론트엔드가 퍼블리싱 전반부터 담당하는 경우만 봐서 퍼블리셔라는 직군이 따로 있다는 게 신기하네요! 사실 저도 디자인 작업보다 퍼블리싱 작업을 더 좋아했습니다.

4.Backend Developer(백엔드 개발자)

백엔드도 크게 2가지로 나뉩니다.
- 좀더 앞쪽을 담당하는,APLI 개발 등을 담당하는 개발자
- 완전 뒤쪽을 담당하는, 데이터 수집-분석-관리 등의 데이터 관련 시스템을 개발하는 개발자
- 경력이 높아지면 DevOps로 진화합니다.

5. DevOps (Development Operations)

  • 시스템 개발 뿐 아니라 시스템 운영까지 담당하는 개발자.직군보다는 개발분야의 추세에 더 가깝다.
  • AWS 등의 클라우드 서비스가 발달함에 따라 서버 구축 및 운영 등의 System Infrastructure 관리까지 백엔드 개발자가 직접 구현하는 추세이다.
  • DevOps에 대한 수요가 굉장히 높다고 한다!

6. SysOps (System Operations)

  • System Infrastructure 의 구현과 관리 및 운영을 담당하는 직군
  • DevOps 와 다르게 실제 하드웨어를 다룰 수 있는 직군이다!
  • Data Center 를 사용하여 시스템을 운영하는 회사에 필요.
  • 최근엔 AWS 같은 클라우드 서비스가 점점 더 많이 쓰이면서, 따로 SysOps 인력을 두지 않고 DevOps 개발자들이 System Infrastructure 를 담당하는 추세라고 한다.

7. Data Scientist

  • Machine Learning, AI 등의 데이터 분석에 필요한 알고리즘과 모델링의 구현을 담당
  • 많은 양의 데이터를 분석해서 새로운 정보와 가치를 만들어 낼 수 있는 직군

8. Data Engineer

  • Data Scientist 가 데이터를 분석할 수 있도록 데이터를 정리하고 정석화 시키는 시스템을 구현하는 역할을 담당

9. Tester

  • 시스템을 테스트하여 검증하는 역할을 담당하는 직군
  • QA (Quality Assurance) - 직접 manual testing을 실행하는 직군.
  • Software Engineer in Test / Test Automation Engineer - Manual testing이 아닌 자동 테스트 시스템을 전문으로 구현하는 개발자.

저는 프로젝트가 끝날때마다 전직원들이 곧바로 테스트 작업에 투입되었기 때문에, QA를 전문적으로 담당하는 직군이 있다는 걸 처음 알았어요!

10. 기타 직군들

  • Project Manager
    • 프로젝트의 일정 및 출시 관리를 담당하는 역할
  • Scrum Master
    • Scrum 개발론이 개발팀 에서 널리 사용 됨에 따라 scrum process 를 관리하고 코치하는 직군이 생겼다.
  • Software Architecture
    • 규모가 굉장히 큰 시스템을 개발하는 회사는 Software Architecture 라고 해서 시스템의 전체 구조 디자인을 담당하는 직군이 따로 있는 곳도 존재.
    • 주로 오래된 경력의 전문가 개발자들이 software architecture role을 담당.
    • Software Architecture 직군은 요즘에는 많이 사라지고 있는 추세. Scrum 개발론이 널리 적용되고 있기때문에, 예전처럼 누군가가 시스템 구조 디자인만 따로 담당하고 개발자들은 전달된 디자인을 개발만 하는 구조는 더이상 어울리지 않는다.
    • 요즘은 개발자들이 scrum 절차에 따라 직접 시스템 디자인을 구현하고 발전시켜 나간다.

제가 거쳐간 곳들은 개발팀도 3~4명 정도의 규모였어서, 이정도로 개발 직군이 세분화 되었는지 몰랐습니다. 특히 백엔드 쪽 직군이 굉장히 다양하네요!


이쯤되니 그냥 우물 안 개구리였나 싶다

마무리

위코드 풀스택 수업 개강 첫날 수업의 내용인데, 제가 생각했던 것보다 웹서비스의 역사가 굉장히 짧았다는 것에 신선한 충격을 받았습니다.
그리고 개발직군에 대한 다양한 종류도 저의 흥미를 돋구기 충분한 내용이었는데, 이제부터 제가 프론트엔드나 백엔드 둘 중 어느 쪽을 더 좋아할지 결정하는건 앞으로의 수업을 들으며 정하게 될 것 같아 기대가 됩니다.

일단 지금은 프론트가 더 좋아요.

profile
진짜 간단하게 작성한 TIL 블로그

0개의 댓글