const studyLog11 = "Web 성장기";

1. Internet

에 대해서 말하려면 인터넷을 떼어놓을 수 없다. 인터넷이 있기에 이라는 서비스가 존재할 수 있기 때문이다.

인터넷의 어원은 International NetWork를 줄인 말이다. 단어 그대로 모든 컴퓨터를 하나의 통신망 안에 연결하고자 하는 의도로, 1960년대 냉전 시기 군사용 네트워크 개발에서 시작되었다. 적군의 핵 공격에 특정 지역의 통신망이 파괴되어도, 전체는 안정적으로 통신할 수 있는 네트워크를 만들고자 개발을 시작하여, 지금의 인터넷이 탄생할 수 있었다.

전쟁 이후에는 군사용보다는 연구용, 거대한 기관의 통신 시스템으로 사용하여 오다가, 1990년 WEB이라는 서비스가 등장하며 대중들도 사용하기 시작했다.


2. WEB

최초의 웹은 살아있다… http://info.cern.ch/

1990년대 초, Tim Berners-Lee가 Word Wide Web과 웹 서버라는 프로그램을 만들고, 그 프로그램이 설치돼 있는 컴퓨터에 위의 주소를 부여하면서 WEB은 태어났다.

2-1. 1세대 WEB

인터넷과 함께 많은 개발자들이 웹 기반 서비스를 시작하며 발전하기 시작했다. 이때의 웹은 정적이었다. 당시 웹 관련 기술은 html과 css가 전부였고, 특별한 기능과 사용자와의 상호작용도 많지 않았다. 그렇기에 클라이언트는 웹 서버에서 HTML 페이지 전체를 전송받는 시스템으로 충분했다.

2-2. 2세대 WEB

JavaScript가 등장하면서 웹서비스는 점점 다채로워지기 시작했다. 이전과는 달리, JavaScript를 이용하면 사용자와의 다양한 상호작용이 가능해졌고, 서버에게 전송 받기만 했던 1세대 웹의 클라이언트와 서버의 관계에서 벗어나 서로 간 데이터를 주고 받는 시스템이 등장했다.

그렇지만 여전히 웹 서비스 구현 전체에서 JavaScript를 사용하는 비율이 크지 않았고, HTML, JavaScript, XML 등 전달되는 파일의 용량이 크지 않아 모두 같은 서버에서 매번 송수신을 했기에 현대의 프론트와 백 구분은 필요하지 않았다.

2-3. 3세대 WEB

3세대부터 본격적으로 프론트 영역과 백 영역을 구분하기 시작했다.

이때부터 웹사이트/웹서비스는 정적인 부분보다 동적인 기능이 주가 되면서, 한 페이지 당 용량이 커졌고 그에 따라 계속 파일을 전달하는 이전 방식은 효율성이 떨어졌다.

이를 해결하기 위해서, 하나의 파일로 전체 사이트를 구현하기 시작했다. 이것을 SPA(single page application)이라고 하는데, SPA는 처음 한 번에 모든 파일을 전송하고, 상호작용에서 변경이 필요한 작은 요소들만 바꾸는 방식으로 서버와 데이터를 주고 받는다.

이러한 동작을 위해서 서버를 두가지(프론트, 백 API)로 분리하였다. 이전과 달리 서버와의 통신은, 프론트엔드 서버를 통해 처음 전송된 HTML 파일에 포함되어 있는 JavaScript에서 필요한 데이터를 API(백엔드) 서버에서 호출하여 동적인 요소를 구성하는 방식이 되었다.

서버의 분리는 업무의 분리까지 이어져, 지금의 프론트엔드와 백엔드 개발자라는 직군의 분리까지 이어졌다.


3. 포지션

현대 개발팀은 개발자로만 구성되어 있지 않다.

  • 기획자

    개발하고자 하는 서비스를 정의하고 기획하는 역할을 담당한다.

  • 웹디자이너

    사용자가 경험하고 사용하는 서비스를 보기 좋게, 사용하기 편리하게 디자인한다.

  • 프론트엔드 개발자 HTML, CSS, JavaScript로 프론트엔드, 즉 보이는 화면을 구현하는 부분을 담당한다.
  • 백엔드 개발자 백엔드 안에서 2개로 구분된다.
    • API 개발자 담당: 좀 더 앞쪽을 담당한다.
    • 데이터 개발자 담당: 데이터 수집, 분석, 관리 등을 담당하는 완전 뒤쪽을 담당한다. 경력이 높아질 수록 뒤쪽으로 간다. ⇒ DevOps
    • 시스템 개발 뿐만 아니라 시스템 운영까지 담당한다.
  • SysOps System Infrastructure의 구현과 관리 및 운영을 담당하는 직군이다.
  • Data Scientist 데이터 분석에 필요한 알고리즘과 모델링의 구현을 담당하는 직군이다.
  • Data Engineer

    데이터 연구원이 데이터를 분석할 수 있게 데이터를 정리하고 정석화시키는 시스템을 구현하는 역할이다.

  • Tester 시스템을 테스트하여 검증하는 지 역할을 담당하는 직군이다.

등, 다양한 직군이 협업하며 개발팀을 구성한다.


생각

태어나기 전부터 인터넷(내가 말하는 인터넷은 웹 기반 서비스에 가깝다.)이 존재했던 세대로, 웹의 역사가 생각만큼 길지 않다는 것을 알게 되었다. 내가 원하는 직무, 프론트엔드는 더욱 역사가 짧은 만큼 발전할 나날이 기대된다. (나도 그 발전의 흐름에 한 몫하고 싶다.)

개발자 팀에 속하는 직군들을 보고 있자니, 내 안의 개발자 이미지가 달라진다. 내가 생각하는 ‘개발자’는 하루종일 컴퓨터 보면서 고민하고,…고군분투하는 그런 이미지가 강했다. (미디어에 접한 모습들이 그래서 그랬나?)

점점 알게되어가는 개발자라는 직업은 오히려 오픈마인드를 가져야 하는, 나의 결과물을 공유하는 문화를 사랑하면서 다른 직군의 사람들과 많은 소통이 필요한 직군이다. 그 사실들을 알고나니 마음이 가벼워진다. 모르는 것은 어디든 물어봐도 된다는 이야기로 들려서 그런 것 아닐까 😂

2022-02-18

오전 12: 44