개발
환경
하드웨어 환경
Client
PC, Smart Phone
Server
Web Server
Apache HTTP Server
Microsoft Internet Information Service,
Google Web Server
기능
통신기록 - 처리한 요청을 로그파일로 기록
정적 파일 관리 - HTML, CSS, 이미지 등 정작파일 관리
대역폭 제한(Bandwidth Throtting) - 네트워크 트래픽 위해 응답속도 제한
가상 호스팅(Virtual Hosting) - 하나의 서버에 여러 도메인 이름 연결
인증(Authentication) - 합법적인 사용자인지 확인
WAS(Web Application Server)
Apache Tomcat(PHP 는 Apache 의 모듈임)
, IBM WebSphere, Oracle WebLogic
DB Server
MySQL Server, Oracle Server, Microsoft SQL Server
File Server
AWS S3
소프트웨어 환경
요구사항 관리 도구
JIRA, IBM DOORS, inteGREAT, Reqtify, Trello
설계/모델링 도구(UML)
DB Designer, PlantUML, ArgoUML
구현도구
Eclipse, IntelliJ IDEA, Visual Studio, Netbeans, Node.js
빌드도구
Ant, Gradle, Maven, Jenkins
테스트 도구
모듈들이 요구사항에 적합하게 구현되었는지 테스트
CppUnit, JUnit, HttpUnit, NUnit, SpringTest
OS, DBMS 등
서버개발
서버프로그램을 작성해 WAS에 탑재하는 것
프레임워크
종류
Java -> Spring : 전자정부 표준 프레임워크 기반 기술
JavaScript -> Node.js : 비동기 입출력 + 이벤트 => 입출력처리 잘함
Python -> Django : 컴포넌트 재사용, 플러그인화 강조
PHP -> Codeigniter : 인터페이스 간단, 서버자원 적게먹음
Ruby -> Ruby on Rails : 테스트를 위한 웹서버 제공해 코드 길이 짧음
특성
MVC 패턴을 주로 이용함
Modularity, Reusability,
Extensibility, Inversion of Control(객체들의 제어를 프레임워크가)
보안 / 소프트웨어 개발 보안 가이드
세션통제 - 서버와 클라이언트의 연결 시 발생하는 정보 관리
입력 데이터 검증 및 표현 - SQL 삽입, 경로조작, 자원삽입, XSS(CrossSite Scripting)
보안기능 - 인증 없이 주요기능 허용, 부적절한 인가
시간 및 상태
멀티프로세스 환경에서 검사 시점과 사용 시점(TOCTOU) 경쟁조건,
반복/재귀 무한
에러처리 - 오류 메세지로 인한 정보 노출, 오류 대응 부재
코드 오류 - null 역참조, 자원 해제 부적절
캡슐화 - 잘못된 세션으로 인한 데이터 노출, 제거되지 않은 디버그 코드
API 오용 - DNS Lookup에 의존한 보안결정, 취약한 API 사용
Batch Program
사용자와 상호작용 없이 미리 일련의 순서로 처리하는 것
종류
정기 배치(상시 없음), 이벤트성 배치, On-Demand 배치(수동으로 킴)
요건
대용량 데이터 가능, 에러떠도 앵간하면 손 안대게 자동화,
에러 안뜨도록 데이터가 견고성, 오류 추적용 안정성/신뢰성,
다른 응용 프로그램 수행이 방해되지 않는 성능
Batch Scheduler(Job Scheduler)
Spring Batch
2007년 Spring Source + Accenture 이 만듬
Job, Job Launcher, Step, Job Repository
Quartz
Job, Job Detail, Trigger, Scheduler
프로그래밍 언어
문법
결합규칙
단항 연산자와 대입 연산자는 오른쪽의 연산자부터 연산됨
우선순위
순서-> 대입 -> 조건 -> 이항(논리 -> 비트 -> 관계 -> 쉬프트 -> 산술) -> 단항
(a, b) -> (a<<=1) -> (a==b) -> ( a ? 1 : 2 )
-> (a && b) -> (a & b) -> (a > b) -> (a << b) -> (a * b) -> (sizeof(a))
종류
명령형 언어
절차형 언어 - 데이터를 중심으로 프로시저를 구현
객체지향 언어
스크립트 언어
서버용 스크립트 언어 : ASP(윈도우 서버용), JSP(Java, Cross), PHP< Python
클라이언트용 스크립트 언어 : Java Script
선언형 언어
함수형 언어
재귀호출이 많이 사용되는 인공지능 분야의 LISP, 간단한 Haskell
기본자료구조가 연결리스트 구조
논리형 언어
기호논리학 기반이라 반복 선언 없고 비절차적임. PROLOG
인공지능 분야의 논리적 추론, 리스트 처리에 사용
기타 - HTML, XML
기억장치 관리
관리 전략
Fetch
Demand Fetch, Anticipatory Fetch
Placement
First Fit, Best Fit, Worst Fit
Replacement
FIFO, OPT, LRU(Least Recently used), LFU, NUR, SCR
할당기법
연속 할당 기법
단일 분할 할당 기법
멀티 태스킹 안됨.
OS영역과 사용자 영역을 구분하는 Boundary Resister
오버레이
메모리보다 클 때 프로그램 조각내서 분할해서 싣기
스와핑
프로그램을 교체하는 기법. Swap in, Swap out
=> 가상기억장치의 페이지 기법으로 발전
다중 분할 할당 기법
고정 분할 할당(Multiple contiguous Fixed parTition allocation, MFT)
정적할당. 운영체제가 사용자영역을 고정된 크기로 분할함
큐에서 준비중인 프로그램을 각 영역에 할당함 => 다중프로그래밍
내부단퍈화(남음), 외부단편화(못들어감) 이 있음.
프로그램 전체가 안들어가면 실행안됨.
가변 분할 할당(Multiple contiguous Variable parTition allocation, MVT)
동적할당, 프로그램을 적재하면서 주기억장치가 분할됨.
다중프로그래밍 잘됨
내부 단편화는 남음
분산할당기법
프로그램을 특정 단위로 나눠서 주기억장치 내에 분산해서 할당하는 기법
보조기억장치를 주기억장치처럼 사요하는 가상기억장치와 연결
구현
Paging 기법
프로그램을 일정 크기로 나눈 페이지,
페이지 크기로 나눠진 주기억장치인 페이지 프레임
이를 연결하는 Page Map Table
페이지가 메모리에 있으면 ok, 없으면 디스크로 가는 매커니즘.
내부 단편화 발생
Segmentation 기법
프로그램을 다양한 크기로 나눈 Segment.
이를 동적으로 다루는 주기억장치와, 이를 연결하는 Segment Map Table
메모리에 동적으로 할당되어 Storage Protection Key(기억장치보조키)필요
외부 단편화 발생
페이지 교체 알고리즘
OPT(Optimal replacement) - 가장 오랫동알 사용하지 않"을" 페이지
FIFO
LRU
LFU(Least Frequently Used)
NUR(Not Used Recently) - 페이지마다 참조비트(더 늦게), 변형비트. 교체 때 초기화
SCR(Second Chance Replacement) - 잘 쓰이는거 내리는거 방지용
Locality
시간 구역성, 공간 구역성
Working Set - 일정시간동안 자주 참조되는 페이지들의 집합. 동적임
페이지 부재 빈도 방식 - Page Fault Rate 에 따라 페이지 프레임 할당 수를 조절
Prepaging - 먼저 필요할 거 같은 페이지들을 한꺼번에 할당
Thrashing
처리시간보다 페이지 교체에 시간씀.
다중프로세스 일정크기 이상 넘어가면 CPU 활용도가 줄어들게 됨.
스케쥴링
시기
장기 - 프로세스의 자원차지 결정. 작업 스케쥴러
중기 - 프로세스의 CPU 할당 결정. 프로세스 많으면 특정 프로세스 보류
단기 - 프로세스의 CPU를 할당받는 시기 결정. 문맥교환. 프로세서 스케쥴러
Non Preemptive Scheduling(비선점)
FCFS(First Come Fisrt Serve), SJF(Shortest Job First),
HRN(Highest Response Ratio Next)
Preemptive Scheduling(선점)
오버헤드 크지만 대화식 가능
Round Robin, SRT(Shortest Remaining Time)
OSI 참조구조
프로토콜 데이터 단위(PDU)
동일 계층 간에 교환되는 정보의 단위, 단편화의 결과이고 재결합되어 SDU가 됨
서비스 데이터 단위(SDU)
서비스 접근점(SAP) 를 통해 상하위 계층끼리 주고받는 정보 단위
구조
하위 계층
물리계층(Physical Layer)
물리적 전송 매체와 전송 신호 방식을 정의
프로토콜
X.25, RS-232C(공중전화교환망)
하드웨어
리피터 - 신호 약해질 때 복구
허브 - 컴퓨터끼리 연결. 더미 허브(대역폭 앤빵), 스위칭허브(최대 대역폭)
데이터 링크 계층(Data Link Layer)
송수신 흐름 제어 기능. 프레임 시작 끝 구분하는 프레임 동기화 기능
물리계층에서 생긴 오류 제어 기능.
프레임 순서적 전송을 위한 순서 제어 기능
프로토콜
LAN => IEEE 802
NIC => HDLC
하드웨어
LAN(Local Area Network <=> WAN)
랜카드(NIC, Network Interface Card)
컴터에 끼워진 정보변경장치
브릿지
MAC Bridge 라고도 함.
브릿지 갯수 n, (n)(n-1)/2 의 전송 가능한 회선.
단말기끼리 연결하며 트래픽 병목 현상을 줄임
스위치
랜과 랜을 물리적으로 연결해 더 큰 LAN 을 만드는 장치
네트워크 계층(Network Layer)
네트워크 연결을 설정, 유지, 해제.
프로토콜
IP 표준 프로토콜
데이터그램을 기반으로 하는 비연결형 서비스 제공
패킷의 분해/조립 주소 지정, 경로 선택 기능 제공
라우터
LAN간, WAN 간 데이터 선택의 최적의 경로를 선택
경로에 대한 정보를 라우팅 제어표에 저장
전송계층(Transport Layer)
OSI 의 상위 하위의 인터페이스
종단 시스템(단말 시스템) 간의 End To End 통신 지원
프로토콜
TCP(Transmission Control Protocol)
패킷의 다중화, 순서제어, 오류제어, 흐름 제어 기능, 스트림 전송기능
UDP(User Datagram Protocol)
하드웨어
게이트웨이
LAN 에서 다른 네트워크에 데이터를 보내거나 다른 네트워크로부터 받음
상위3계층을 연결해서 데이터 형식변환, 주소 변환, 프로토콜 변환을 함
하위
세션 계층(Session Layer)
송수신 간의 동기화.
동기점 - 오류가 있는 데이터의 회복을 위해 사용
표현 계층(Presentation Layer)
서로 다른 데이터 표현형태를 갖는 시스템 간의 상호 접속
코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 포맷 변환
응용 계층(Application Layer)
서비스 제공
프로토콜
구성
구문(Syntax), 의미(Semantics), 시간(Timing) - 기기간의 통신속도, 메세지 순서제어
응용계층, 전송 계층, 인터넷 계층, 네트워크 액세스 계층 으로 나뉨
프로토콜의 기능
단편화와 재결합 - PDU <-> SDU
갭슐화
PDU에 송수신지 주소, 오류 검출 코드, 프로토콜 제어 정보를 부가 = 요약화
L2 의 HDLC 프레임. 정보데이터를 오류없이 정확히 전송
흐름 제어
정지/대기, 슬라이딩 윈도우
오류제어
동기화
순서제어 - PDU에 전송순서 부여, 연결위주의 데이터 전송방식에서만 사용
주소 지정
다중화 - 한개의 통신 회선을 여러 가입자들이 동시에 사용하도록
경로제어 - 라우터 하는 짓
전송 서비스 - 우선순위, 서비스 등급, 보안성 등 부가서비스를 위한 기능
댓글 없음:
댓글 쓰기