1. WEB 시스템 구성도, 역할, 관련 소프트웨어
1.1. Web Application Architecture
WEB Browser
Request 요청 / Response 응답
HTML과 CSS 명세에 따라 HTML 파일 해석 및 표시
종류로는 Chrome, Firefox, Microsoft Edge, Opera 등
WEB Server
정적인 파일을 반환하는 서버
SSL(암복호화 처리)
접근 허용 IP 관리, 2대 이상의 서버에서 세션 관리 등
종류로는 NginX, Apache, IIS 등
WAS
동적인 정보를 처리하여 웹 서버에 정적 정보를 제공
일반적으로 웹 기능도 내재하고 있어 웹 서버 없이도 서비스가 가능
종류로는 Apache tomcat, JBoss, JEUS 등
DB
필요한 데이터 저장
종류로는 오라클, MySQL, MS-SQL 등
1.2. Network – 데이터 송신
구성요소 | 설명 |
Router | 3계층 장비로 LAN과 LAN 또는 WAN을 연결하기 위한 장비 패킷의 위치를 추출해 최적 경로를 지정하고 그 경로를 따라 데이터 패킷을 다음 장치로 전송 |
Hub | 여러 대의 컴퓨터를 연결해 네트워크로 보내거나 하나의 네트워크로 수신된 정보를 여러 대의 컴퓨터로 송신하기 위한 장비 |
Switch | L2, L3, L4는 각각 2계층, 3계층, 4계층에서 네트워크 단위들을 연결하는 통신 장비다. 브리지, 허브의 느린 전송속도를 개선하기 위해 사용 L4: TCP/UDP 등 스위칭 수행, FTP, HTTP 등을 구분해 스위칭하는 로드 밸런싱이 가능 |
Firewall | 외부로부터 불법 침입과 내부 불법 정보 유출을 방지하고 내/외부 네트워크의 상호간 영향을 차단하기 위한 보안 시스템 |
Gateway | 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간 통신을 가능하게 함 |
Bridge | 두 개의 LAN을 서로 연결해 주는 통신망 연결 장치 |
TCP/IP | 역할 |
Application Layer | 데이터의 내용을 보고 애플리케이션 목적에 따른 서비스를 사용자에게 제공 |
Transport Layer | 데이터의 흐름을 제어해 신뢰성, 효율성을 관리하고, 목적지 컴퓨터에 전송된 데이터를 적절히 배분 |
Internet Layer | 서로 다른 네트워크에 있는 컴퓨터 간 데이터 전송 |
Network Interface Layer | 같은 네트워크 안에서 물리적으로 인접해 연결되어 있는 네트워크 장비 간의 데이터 전송 |
2. WEB 시스템 기술요소
2.1. Client Side
구성요소 | 설명 |
HTML | 다양한 HTML 요소로 컨텐츠를 표현하고 해석되는 마크업 언어 |
CSS | HTML의 스타일을 미리 지정해 놓은 문서 |
JavaScript | HTML, CSS 요소 등을 제어하기 위해 시작, 현재는 node.js 등으로 서버 사이드까지 범위가 확장 |
Plugin | JQuery, React, Boostrap 등 개발 편의성을 높여주는 프로그램 |
2.2. Server Side
구성요소 | 설명 |
JSP | Java 언어 기반의 웹 어플리케이션 프로그래밍 |
ASP | MS의 기존 웹 서버 프로그래밍 기술 |
ASP.NET | .Net Platform의 ASP.NET 프레임워크를 이용해 C# 등 .NET 전용 언어로 웹 어플리케이션을 개발 |
PHP | Personal Home Page Tools, C언어 기반 웹 어플리케이션 프로그래밍 |
4. Web 시스템 개발 방법론
4.1. 구조적 방법론
구분 | 설명 |
정의 | 구조적 프로그래밍은 코드가 계층적인 형식과 제한된 구조로, 작성된 순서대로 순차적으로 실행함. 알고리즘을 기술하는 데는 순차, 선택, 반복 구조면 충분하다. (NS차트) 단일입구/단일출구의 처리구조 |
등장배경 | GOTO문을 지양하자는 주장이 호응을 얻으면서 분석과 설계도 구조적으로 하자라는 의견으로 확대되면서 구조적 방법론의 틀이 완성. |
특징 | 데이터 흐름지향. 즉 프로세스 위주의 분석과 설계방식 (DFD/ERD) 모듈의 분할과 정복에 의한 하향식(Top-Down) 설계방식 모듈의 구조화를 통한 재사용/유지보수성 제고 SDLC 구조를 가진 폭포수 모델이 기본 |
중점 | 기능중심 |
단점 | 어플리케이션은 여전히 기능적 설계 기능의 유지보수, 재사용은 낮음. - 데이터의 구성에 대한 설계 방안이 부족 프로젝트의 관리 및 조직, 역할 등 방법론적 다른 요소들의 정의가 없음. 단순한 소프트웨어 개발을 목표로 한다는 점에게 기인 데이터가 정보 은닉이 안됨. |
4.2. 정보공학적 방법론
구분 | 설명 |
정의 | 기업정보시스템에 공학적 기법을 적용하여 시스템의 계획, 분석, 설계 및 구축을 하는 데이터 중심의 방법론 |
등장배경 | 정보시스템은 소프트웨어 개발과는 달리 하드웨어, 네트워크 등 여려 소프트웨어와 복잡하게 연결되는 대규모 시스템이기 때문에 이러한 시스템을 개발하기 위해서는 장기간, 많은 인력이 소요되므로 철저한 계획, 팀워크에 따른 프로젝트 관리, 이의 진행을 위한 잘 짜여진 방법론이 필요 |
특징 | 기업의 Biz전략에 따라 수립된 ISP에 맞는 정보시스템 통합에 초점. 순서: ISP수립 -> 업무영역분석 -> 업무시스템설계 -> 업무시스템 구축 Process는 변하지만 Data는 불변이기 때문에 프로그램 로직은 데이터 구조에 종속(CRUD)적이며 데이터 안정성을 추구하기 위한 데이터 구조에 중점을 둔다. 공학적 개발방법론이며 자동화 도구, CASE Tool을 이용하여 코드의 자동생성을 목표 |
중점 | 데이터구조(자료구조) |
단점 | 여전히 기능적 설계 기능의 유지보수, 재사용은 낮음. |
4.3. 객체지향 방법론
구분 | 설명 |
정의 | 복잡한 현실세계를 모델링 객체를 중심으로 프로그래밍 구조를 단순화하고 재사용성을 강화 |
등장배경 | 기존 방법들 모두 프로세스와 데이터를 분리하여 처리한다는 단점이 이를 통합하여 처리하는 객체지향의 등장에 가장 큰 배경 * 구조적, 정보공학은 Process 와 Data를 분리했다면 객체지향은 Process와 Data를 통합해 Class화 |
특징 | 재사용이 강점 (White box 재사용) 추상화, 상속성, 다형성, 캡슐화 분석 설계간 Gap 없음. 고도의 모듈화 데이터와 로직을 통합 (객체) |
중점 | 객체중심 |
단점 | 전문가 부족, 기본 SW기술 필요 |
4.4. CBD 방법론
구분 | 설명 |
정의 | 재사용이 가능한 Component의 개발 또는 상용 컴포넌트들을 조합하여 어플리케이션 개발 |
특징 | Black box 재사용: 인터페이스를 이용해서 재사용 추상화, 캡슐화 - Input과 Output만 있음. 표준화된 UML을 통한 모델링 및 산출물 작성 반복 점진적 개발 프로세스 제공 |
중점 | 컴포넌트 중심 |
장점 | 개발 시간 단축 개발자가 비즈니스 기능 구현에만 집중해 품질 향상 모듈성 확대 표준화된 산출물 작성 및 컴포넌트 제작 기법을 통한 재사용성 향상. |
단점 | 통합에 대한 부분을 초기 시점부터 개발이 진행되는 과정 중에 유의해야 한다. 요구사항이 미흡하게 정의되어 있으면 비즈니스 요구사항을 만족시키지 못할 가능성 |
개발순서 | 도메인 분석 -> 도메인 설계 -> 컴포넌트 추출 -> 컴포넌트 설계 -> 컴포넌트 구현 |
5. 참조
http://mixedcode.com/Article/Index?aidx=1063
믹스드코드랩:{나도개발자시리즈1}:웹프로그래밍 기술구성요소
5일차 교육중 2일차 강의를 시작하겠습니다.2일차 강의의 주요 내용은 직접 개발과 관련된 내용이라 기 공지드린대로 여러분 컴퓨터에 이미 개발환경이 구축되어 있다는 전제로 강의를 진행토
mixedcode.com
3번만 올리려다가 다 올리는 회사 숙제
쓰면서 내용 암기를 한 건 아니라 물어보면 모름.
이런게 있구나~ 하는 정도로 학습했다.
근데 지금의 개발 환경이라기엔 약간 온고지신의 느낌이 나는 부분이 있는 거 같음.
리액트 같은거 서버사이드 클라이언트 사이드 다 섞는 next.js 이런 것도 있는데 주어진 주제로 검색하려다 보니 저런 거 밖에 안나왔다. 기존에 제출한 파일 봐도 그냥 옛날 자료.
역사 공부하듯이 공부했다. 개발의 온고지신!