웹의 역사와 개발팀의 구조 #day3-2

seonja kim·2020년 3월 25일
1
post-custom-banner

#웹의 역사와 발전, #개발팀, #개발팀의 구조, #개발 직군, #개발 직군 이해

웹의 역사


Front end와 Back end는 어떻게 나눠지게 된 걸까?
그 것을 알기 위해선 WEB의 발전 역사를 알아야 한다.


WEB은 원래 군사목적으로 서버 간에 문서를 주고 받기 위해 만들어졌다.

internet : net(그물) inter(그들끼리만, 사이에)

넓게 펼쳐진 그물과 같은 연결 사이에 소통이 가능하게 해주는 기능


인터넷이 가져 온 혁신 = 유통의 혁신


과거 : 새로운 기술이나 정보는 CD나 플러피 디스크(실물(하드웨어))를 이용해 주고 받음

인터넷의 발명 이후 : 새로운 기술이나 정보가 네트워크를 통해 유통되고 쉽게 다운받을 수 있음

창업이 쉬워지면서 닷컴붐이 발생



Front와 Back end가 분리된 역사


프론트엔드와 백엔드의 분리는 HTML (HyperText Markup Language)에 대한 이해에서 시작

Hypertext의 정의 (Google 참조) :

사용자에게 내용의 비순차적 검색이 가능하도록 제공되는 텍스트. 문서 내의 특정한 단어가 다른 단어나 데이터베이스와 링크되어 있어 사용자가 관련 문서를 넘나들며 원하는 정보를 얻을 수 있음. 전자 사전·멀티미디어 데이터베이스·문장 작성 시스템 등에 응용됨.



HTML


1세대 : 문서들만 존재(정적임) (링크를 클릭해야 화면이 움직임)

2세대 : 닷컴붐 때, 소프트웨어를 유통하기 위해 동적인 기능을 구현할 필요성을 느끼고 Javascript가 만들어짐

3세대 : Javascript의 동적인 기능이 훨씬 부각됨
HTML 속에서 구현되던 JS가 메인이 되어, JS 코드 내에서 HTML을 구현할 수 있게 되면서 파일 하나로 모든 것을 구현할 수 있게 됨 (Single Page Application : SPA)

SPA를 구현할 수 있는 서비스 : react


하나의 페이지(UI, UX)를 만들어, 데이터만 주고 받게 되면서 Front end와 Back end가 나눠지게 됨

  • Front end의 주요 기능 : 보여지는 기능 구현 (UI, UX)

  • Back end의 주요 기능 : 데이터 처리



현재 개발자들의 과제


CD와 같은 하드웨어가 아닌 소프트웨어를 통해 모든 나라에 유통이 가능하게 되었고 Facebook과 Instagram과 같이 전세계를 무대로 하는 서비스의 엄청난 동시접속자수와 데이터의 효율적인 처리, 활용이 도전과제

데이터 추출, 가공의 중요성 : 광고나 Youtube 추천 영상과 같은 알고리즘 구현



개발팀의 구조


  1. Product manager (PM) 기획자 : 서비스를 기획하고, 개발의 구현 순서를 정하며, 유저들의 피드백을 다시 기능으로 녹여내는 직군 (직급의 명칭은 Manager이지만 관리자가 아닌 기획자로, 개발자와 직급을 같이 한다.)
  1. Front end 개발자 : HTML, CSS, Javascript를 이용해 UI, UX 구현

  2. Back end 개발자

    1) Back end API

    API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. (from Google)

    2) Devops

    데브옵스(DevOps)는 소프트웨어의 개발(Development)과 운영(Operations)의 합성어로서, 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 말한다. 데브옵스는 소프트웨어 개발조직과 운영조직간의 상호 의존적 대응이며 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 한다. (from Google)

    • DevOps : 선호하는 직군이나 경험이 필요한 업무이므로 주로 Back end senior 개발자들이 주로 맡게 된다.

    3) SysOps

    ‘system operator’ was used to denote any professional who was responsible for any computer system. But with the advancement of Cloud Computing, it has become a terminology for denoting professionals who are responsible for multi-user systems. (참조 블로그 링크)

    서버 운영은 하드웨어적인 측면과 관련이 있으므로 하드웨어적 측면(보안을 위해 기업이 내부적으로 데이터를 관리하는 경우, 기업 자체에 서버를 위한 하드웨어가 필요하다.)과 system 개발 후 배포하는 역할을 서버운영진이 하게 된다.

    • 사라져가고 있는 직무 (= SysOps) :
      AWS (Amazon Web Service) cloud 발전으로 하드웨어 역할 없이도 소프트웨어를 cloud를 통해서 유통가능하게 되었음.
      금융권과 같이 보안 규제가 심한 산업 이외에는 AWS 이용으로 전환되고 있는 추세이므로 장기적 전망이 좋지 않음

    4) Data Scientist

    수집된 엄청난 양의 데이터를 이용해 패턴을 만들고 유용한 기능을 구현하는 직종으므로 엄청난 지식과 경력이 필요하며 알고리즘 분석과 숫자에 강한 반면 코딩은 잘 하지 못 할 수도 있다.

    데이터 분류와 가공에 대부분의 시간을 투여하며 연봉 또한 높다.

    5) Data Engineer

    데이터사이언스와 비슷한 기능을 하는 직종이지만 지식과 경력의 장벽이 상대적으로 낮고 연봉이 데이터사이언스에 비해 낮다.

    6) QA (Quality Assurance)

    소프트웨어가 기획의 의도나 목적에 따라 올바르게 구동하는가를 시험하여, 제품의 결함을 발견하고 품질을 높이는 직무이다.

    7) 풀스택 개발자

    프론트와 백엔드를 모두 다룰 수 있다는 점에서 분명한 장점이 있지만 깊이가 얕기에 경력이 쌓일수록 매력도가 낮아진다. Junior Full-stack 개발자의 경우, 스타트업 취업에는 많은 이점을 가진다.

  • 이러한 단점에도 풀스택에 관심이 있을 경우 : 프론트와 백엔드 중 한 전문분야를 깊이 공부하며, 반대분야를 보너스 개념으로 지식을 쌓기를 추천한다.

    8) Project manager

    한시적인 일을 수행하는 데 있어서 관리 방법론(통합, 범위, 시간, 원가, 품질, 인력, 의사소통, 위험, 조달관리)에 따라 가장 효율적으로 추진하는 것으로 프로젝트의 계획과 실행에 있어서 종합적인 책임을 가진 직책 또는 직무이다. (위키백과)

    9) Scrum master

    프로젝트 관리자들과 달리 여러 프로젝트의 팀원을 코칭하고 각 프로젝트의 문제 상황을 해결하는 역할을 하며 각 팀에 객관적인 시각으로 분쟁을 조정하고 생산성을 높일 수 있게 도움을 준다.

    10) Software architecture

    건축가와 같이 Software System의 중요한 구조를 설정하고 규칙을 만드는 직군으로 대기업에만 간혹 존재하며 Team leader들이 이와 같은 업무를 대체할 수 있기에 사장되고 있는 직군이다.



결론


리더가 되려면 실력보다 **communication skill이 더 중요**할수도 있다. Wecode에서 공부하면서 모두가 나와 함께 팀 활동을 하고 싶게 만드는 사람이 되도록 노력하라.

  • 이유 :
    Google에서 Chrome을 개발하는 개발자가 대략 1000명이라 하면 거기서 개발자 한 개인이 사라진다고 해서 변하는 것은 거의 없지만 함께 일하고자 하는 리더가 사라지면 팀 활동에 큰 영향을 미치게 된다.
profile
Adventurer
post-custom-banner

0개의 댓글