Web application programmer 너는 뭐하는 사람이니?[얕고 넓은 JD지식쌓기]

  • 11,061
  • 0
  • 0

 웹은 어떻게 보면 가장 흔하게 볼 수 있는 시스템이 되어 있습니다. 소프트웨어 공학적 관점에서 보게 되면 웹 어플리케이션이란(또는 웹앱이라고도 한답니다) 인터넷이나 인트라넷을 통해 웹브라우저에서 이용할 수 있는 응용 소프트웨어를 말한다고 합니다.

(--)_ 어렵죠? 이건 그냥 사례로 보면 좀 더 이해가 된답니다. 여기에 해당하는 것이 웹메일, 온라인 전사상거래 및 경매, 위키, 인터넷 게시판, 블로그 및 MMORPG 등!!

 

그들이 필요한 기술적 지식은 아래정도는 기본(?)이라고 하네요

사람들이 보는 화면을 위해 HTML , CSS, 자바스크립트, JQuery 등에 대한 기술적 지식이,

서버서측과의 소통을 위해 ASP.net, ASP, C Java, PHP, Python, Ruby 등 기술적 지식이

데이터베이스를 위해 Oracle, Mssql, Mysql, MongoDB 등에 대한 지식등이 필요로 되어진다고 합니다.

 

 

그럼 이런 웹 개발자는 어떤 일을 하게 될까요?

보통 고객이나 이용자들이 웹사이트에 접속했을 때 보이는 것들에 해당하는 코드를 만들게 됩니다. 또한 서버측에서 어떻게 처리할지에 대한 부분도 설계 하며 데이터 베이스에서 정보 처리를 어떻게 할지도 잘 설계를 해두게 되겠죠? 

 

뭐 좀 햇갈린다면 실제 뭐 대기업에서 진행했던 JD를 통해 한번 살펴보시죠~

 

[국내 유명 게임사 진행 Web Application Programmer 포지션 JD]

**직무 개요 

* 메시징 기반의 기업용 협업 서비스를 구성하는 웹/모바일 서버를 개발하고, LIVE 서비스의 SW 기술 운영을 담당 

1) REST API 설계와 개발 

- API가 어떻게 동작해야 하는지를 클라이언트 개발 멤버들과 상의 및 결정 

2) 백엔드 아키텍처 설계와 개선 

- 대규모로 성장하는 사용자를 충분히 지원할 수 있도록 새로운 기능을 구현하 고 단위 테스트를 실시, 스케일링 문제에 유연하게 대응 

- 기술 설계 문서의 작성, 검토 및 제안에 대한 피드백을 제공하기 위해 멤버들 과 공동 작업 

3) Redis, Elasticsearch 등의 다양한 서버 사이드 기술을 검토하고, 적용 및 운영 

4) 사용자 관리 및 시스템 확장에 유연하게 대처하고, 개발 프로세스를 개선 

5) 외부 서비스 연동을 위한 API / SDK 등을 설계하고, 개발 

 

[경력 요건] 

1) 해당 업무 5년 이상 필수 

2) 전문적으로 웹 애플리케이션을 구축한 경험이 있고, 정확하게 작업한 것을 보여줄 수 있는 분 

3) Functional 또는 Imperative 프로그래밍 언어(PHP, Python, Ruby, Go, Java, Scala 등)에 대한 경험이 있는 분 

4) 함께 일하는 동료(기획, 디자인, 클라이언트)에게 복잡한 기술적 컨셉을 잘 설명 할 수 있는 분 

5) 웹의 기본 동작 원리와 HTTP, TCP/IP 에 대한 이해 (어떤 API 가 좋은 API 인지 잘 알고 있는 분) 

6) 데이터베이스 설계와 튜닝에 대한 충분한 이해가 있는 분 - CS 에 대한 기초 개념을 충분히 가진 분 (data structures, algorithms, programming languages, distributed systems) 

7) 인터넷 세상에서 보안의 개념을 이해하고, 고객을 보호하기 위한 다양한 조 치를 취할 수 있는 분 

8) 신뢰할 수 있고, 안전한 분산 시스템을 구축하는 방법과 기능 설계 시 발생 하는 장단점에 대해 이해하고, 설명할 수 있는 분 

9) 기술 능력과 긍정적인 태도로 다른 사람이 함께 일하고 싶어하는 분 

* Tech Stack: AWS, Play Framework, Scala, Redis, Jenkins, ELK 등 

 
 
 
 

 
 
**간단 용어 해석
 
1. Redis (Remote Dictionary Server의 약자)
오픈 소스 소프트웨어이며  네트워크화, 인메모리 데이터베이스, 선택적 영구성 키-값 데이터 저장소
특징 : 모든 데이터를 메모리에 저장하기 때문에 읽기와 쓰기 명령이 매우 빠름
=> (더간단히)휘발성이면서 영속성을 가진 key-value 저장소
 
2. Elasticsearch
오픈소스 검색 기술
(아파치 루신을 기반으로 만든 분산 검색엔진)설치와 서버 확장이 편리
 
 
3. Scala
프로그래밍 언어 중 하나 / 자바 VM에서 실행되는 스칼라
객체 지향 프로그래밍 언어와 함수형 프로그래밍의 요소가 
결합된 다중패러다임 프로그래밍 언어
적은 양의 코드로도 방대한 규모의 시스템을 작성할 수 있다는 특징
 
4. Play Framework
자바를 기반으로 하는 웹 프레임워크
기본적인 웹사이트 구조를 만들어주고, 자바 소스를 수정한 후 서버의 재기동 없이 바로 적용해 주는점 / 인터넷에서 다운받아 누구나 실행가능
 
 
5. HTTP (Hypertext Transfer Protocol)
인터넷에서 하이퍼텍스트 문서를 교환하기 위해 사용되는 통신규약
*하이퍼텍스트: 사용자가 연상하는 순서에 따라 원하는 정보를 얻을 수 있는  시스템
 
 
6. TCP / IP (Transmission Control Protocol + Internet Protocol)
서로 다른 컴퓨터들이 통신할 수 있게 하는 통신 프로토콜들의 집합으로  가장 많이 사용되는 TCP/IP를 포함한 각종 프로토콜
크게 상위계층(TCP)과 하위계층(IP)로 나눌 수 있음.
상위계층: 전송을 위해 파일이나 메시지를 작은 덩어리로 쪼개고, 수신된  덩어리를 원래 형태로 재조합 하는 역할
하위계층: 각 덩어리의 주소를 설정하고 경로를 다루며 알맞은 목적지로 인도하는 역할
 
 
 
 
엄청 어렵죠? 일반 문과 테크트리를 탔던 인사팀분들이라면 이 JD를 현업팀에서 받는 순간 확 당황스러울스도 있겠지만, 뭐 저희가 개발할거는 아니니까요? 얕고 넓은 지식으로 습득하면 되겠습니다.
 
 
`17.01.17(updated. `21.10.13)