Web 환경의 이해
Web Framework(Struts, spring 등)가 대중화 되면서 SW의 생산성은 향상되었지만, 웹 서비스를 위해 1997년 SUN에서 제안한 Servlet, Servlet을 배치(Deploy) 및 실행하는 Servlet Container 즉, 웹 환경에 대한 이해의 필요성은 점점 줄어들어 졌습니다.
웹 프레임워크에서 제공하는 기능은 서블릿 컨테이너 위에서 동작하는 서블릿, 필터, 리스너 등을 조합하여 구현한 것이며
웹 애플리케이션은 결국 서블릿 컨테이너 위에서 동작하므로, 서블릿 컨테이너에 대한 이해가 웹 환경에서 가장 중요한 부분입니다.
기본에 충실하다면 빠르게 변해가는 IT(Web) 환경을 따라갈 수 있을거라는 바람으로 웹 환경에 대해 정리해봅니다. 그리고 웹 프로그래밍을 처음 시작하는 분들에게 유익한 정보가 되었으면 합니다.
Web 환경의 기본 아키텍처(3-Tier)
그림[3-Tier 아키텍처]과 같이 Web은 3-Tier 구조를 기본으로 합니다. message를 주고 받기위한 Layer가 3개라는 의미입니다. 또는 message를 주고 받기위한 Network node가 3개라 이해하셔도 될 것 같습니다. 모든 요청 및 응답 메시지는 반드시 Application Layer(Middleware)를 거쳐 가도록 설계되어 있어 대부분의 환경설정은 Application Layer에서 이루어집니다.
Middleware : 송/수신자 사이에서 메시지를 전달하는 중계자로(Broker) 데이터 포맷 변환, 로드 밸런싱, QoS(Quality Of Service)등을 수행하여 플랫폼의 독립성을 지원하는 소프트웨어
MVC(Model-View-Controller) : MVC 아키텍처는 View의 변화에 대한 Model의 영향도를 줄이기위한 SW 아키텍처 스타일로 그림[3-Tier 아키텍처]의 Application Layer에서 구현됩니다.
[3-Tier 아키텍처]
요청에서 응답까지의 흐름을 간단하게 설명하고 각 Layer에 대한 설명으로 넘어가겠습니다.
사용자가 Web Browser에서 요청 URL을 입력하거나 이벤트(조회 버튼 클릭 등)를 발생
Web Browser는 요청 Message를 HTTP 메시지로 변환하여 Web Server에게 전달
Web Server는 요청을 수락하고 HTTP 요청 URL을 분석하여 정적 페이지(HTML, Javascript, CSS 등) 요청이면 Web Server 자신이 처리를 하고 Business Logic 처리가 필요하면 WAS에게 다시 전달
WAS는 Database에 접속하여 데이터 Insert, Update, Delete, Select 작업을 완료 후 요청과 같은 Chanel로 처리결과(응답 메시지)를 Web Browser에게 돌려준다
Web Browser는 응답 메시지를 파싱 및 렌더링하여 사용자에게 보여준다.
▶ Client Tier
HTTP를 사용하는 대표적인 User Agent로 사용자 PC에 설치된 Internet Explorer, Chrome, Fire Fox 등의 Web Browser를 말합니다.
HTTP를 이용해 웹 페이지를 가져오거나 Web Server에게 HTTP 요청 URL(Message)을 전송하는 역할을 합니다.
브라우저의 구조 및 동작과정 등의 자세한 내용은 http://d2.naver.com/helloworld/59361 를 참조하세요!
▶ Application Tier
서비스 대상 SW가 배포(Deploy)되어 실행되는 Tier로 Client의 요청 Message를 처리하여 다시 Client에게 전달하는 역할을 수행한다. 웹 환경 이해의 핵심 Tier로 자세한 설명은 웹 환경의 이해(2/2)를 참조하세요!
▶ Database Tier
업무 처리 시 생성 및 수집되는 데이터를 보관하고 있는 Tier로 빅데이터 시스템을 제외하면 대부분의 시스템에서 RDBMS를 사용하고 있습니다. Application Tier와의 인터페이스를 위해 JAVA의 경우 JDBC(JAVA Database Connectivity) API를 사용합니다. JDBC API를 사용하기 위해 설치된 RDBMS의 종류에 따라 JDBC Driver를 다운로드하여 웹 애플리케이션 폴더 하위에 (WEB-INF/lib 폴더 아래)에 위치해야 한다. 서블릿 컨테이너 기동 시 메모리에 로딩하되기위한 클래스 패스 내에 위치해야 합니다.
'아키텍처' 카테고리의 다른 글
소프트웨어 아키텍처 평가기법 (0) | 2017.04.14 |
---|---|
웹 환경의 이해(2/2) (0) | 2017.01.18 |
IT분야(SI/SM, DB, 컨설팅)를 8년째 경험하면서 느낀점을 정리해봅니다.
그리고 SI/SM분야로 취업을 고려하는 분들에게 도움이 되고자 합니다.
먼저 IT와 관련된 기업들의 종류를 알아볼까요...
기업구분 |
설명 |
대표기업 |
컨설팅 |
민간 및 공공기관의 비전 및 목표를 달성을 위한 IT 중장기 계획을 세우는ISP 및 업무 프로세스를 새롭게하는 BPR 등을 주로 수행. (감리도 포함) |
IBM, 액센츄어, 기타 국내기업 |
SI/SM |
민간 및 공공기관의 업무 프로세스를 정보기술을 사용하여 자동화 시스템으로 개발 |
삼성 SDS, LG CNS, SK C&C, 대우정보통신 등 |
DB |
시스템을 통해 생산되는 데이터를 관리, 설계 및 성능개선 |
엔코아, 비투엔 등 |
서비스 |
포털, e-커머스, 쇼핑몰 등 정보기술을 사용하여 서비스를 제공 |
네이버, 다음(카카오), 쿠팡, 11번가 등 |
게임 |
PC 및 Mobile에서 즐길 수 있는 다양한 게임을 기획, 개발, 호스팅 |
넥슨, NC 소프트, 넷마블 등 |
솔루션 |
위의 기업들이 필요로하는 SW/HW를 제작 |
오라클, 티맥스, 제니퍼 소프트, 투비소프트 등 |
보안 |
고객 사이드 모니터링(관제) 및 보안전문 SW/HW 제작 |
안랩, 알약 등 |
너무나 주관적인 나의 생각...
물론 요즈음, 빅데이터, 인공지능(딥러닝, 머신러닝) 등의 분야가 핫 이슈지만 취업 시장이 그렇게 넓지 않은것 같습니다.
그래서 자신의 적성은 명확히 모르겠지만, IT분야로 취업을 원하는 사람들에게는 SI/SM 분야를 추천합니다. 그 이유는....
1. 시장규모가 가장 크고, 진입장벽이 낮은 편입니다(조금 씁쓸한 얘기지만…).
2. 시스템 구축 및 유지보수 시 IT분야와 관련된 거의 모든것을 경험할 수 있어 향후 자신의 진로 및 적성을 찾기 수월하다.
- 개발언어 및 웹 환경의 이해 : JAVA, .NET/C#, C/C++, Unix/Linux 등의 서버 및 웹 환경
- 업무지식 : 분석/설계 및 컨설팅 시 필요
- DB : SQL/PL SQL, 데이터 모델 이해, 튜닝 등의 Database 지식 습득(유명한 튜너들은 개발자 출신이 많다)
- NW 및 보안 : 네트워크 및 보안 지식 습득
- 다양한 솔루션 경험 : DB, WAS, UI(Miplatform, Xplatform 등), Report Tool
3. 다양한 경험을 바탕으로 컨설팅, DB, 보안, 솔루션 기업으로 전직이 가능하다
4. 자신만의 컨텐츠를 만들 수 있다 : 앱, 솔루션, 블로그(개인 사이트), 유튜브, 게임 등
SI/SM분야로 진로를 정할 때 고려사항
1. 업무 도메인(젊을 땐 몰랐는데… 나이가 들수록 중요성을 느끼고 있어요...)
- 최대한 공공기관은 후순위로 둔다. 공공기관에서 배운 업무지식은 해당기관에 특화된 업무가 많으므로 다른 곳에서 재사용 할 수 없다.
- 금융(은행, 증권, 보험, 카드), 재무/회계, 물류/유통, 통신 등 수요가 많고 업무지식을 재사용할 수 있는 업무 도메인을 우선 선택
- 물론 업무지식이 중요하지 않은 AA, TA DBA 직군도 있다.
2. 개발과 관련된 기술에 한 번은 미쳐라!
- 개발언어 : JAVA개발자일 경우 - JAVA, JSP/Servlet, 디자인패턴, 리팩토링, 프레임워크(스프링 등), Javascript
- 웹 환경 : 브라우저, 웹 서버, WAS, 빌드툴, 형상관리
3. 고급이 되기전에 자기만의 특화된 기술[IT기술(분석/설계), 업무 지식, 인맥, PT, 문서작성 등]을 만든다.
- 웹 프레임워크의 대중화로 시스템 구축 시 특별한 업무가 아니면 고급인력을 쓸 필요성이 없다.