소프트웨어 아키텍처
소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다.
소프트웨어 아키텍처 패턴 종류
- 레이어 패턴
시스템을 계층으로 구분하여 구성하는 고전적인 방법의 패턴
각 하위 모듈은 추상화 제공, 서로 마주보는 계층끼리 상호작용
- 클라이언트-서버 패턴
하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
사용자가 클라이언트에 서비스 요청, 서버가 클라이언트에 서비스 제공, 클라이언트가 사용자에게 전달
- 파이프-필터 패턴
데이터 스트림 절차의 각 단계를 필터로 캡슐화하여 파이프를 통해 전송하는 패턴
분산 시스템에서 사용, 원격 서비스 실행 통해 상호작용 가능
- 브로커 패턴
사용자가 원하는 서비스와 특성을 브로커 컴포넌트에 요청하면 브로커 컴포넌트가 요청에 맞는 컴포넌트와 사용자를 연결해주는 패턴
- 모델-뷰-컨트롤러 패턴(MVC 패턴)
서브시스템을 모델, 뷰, 컨트롤러로 구조화하는 패턴
모델: 핵심기능, 데이터 보관 | 뷰 : 사용자에게 정보 표시 | 컨트롤러 : 요청을 입력받아 처리
웹서비스 구성요소
네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식으로 공유하는 기술
- SOAP : HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 네트워크 상태에서 교환하는 프로토콜
- WSDL : 웹 서비스의 상세 내용을 기술된 XML 형태로 기술한 언어
- UDDI : WSDL을 기록하고 보관하기 위한 저장소
* REST : HTTP프로토콜로 데이터를 전달하는 프레임 워크, 웹에 최적화 되어있고 데이터 포맷이 JSON이기때문에 브라우저들간의 호환성 좋음
EAI 유형 [포허메하]
point to point : 1대1 단순 통합 방식
hub&spoke : 단일한 접점의 허브 시스템을 통하여 데이터 전송, 중앙 집중 방식
message bus : 앱 사이 미들웨어를 두어 연계하는 미들웨어 통합 방식
hybrid : 그룹 내는 hub&spoke, 그룹 간에는 message bus 방식으로 통합
EAI : 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합 가능하게 함
ESB : 기업 간 이기종 서비스 중심 통합 아키텍쳐 , 느슨한 결합 방식
식별자 표기법
- 카멜 표기법 : 첫 단어 시작만 소문자, 다음부턴 대문자 ex)input Function
- 파스칼 표기법 : 모든 단어 첫 글자 대문자 ex)Input Function
- 스네이크 표기법 : 언더바 사용 ex)input_function
- 헝가리안 표기법 : int형은 n, char형은 c, 문자열은 sz ex)nScore -> 정수형
비즈니스 연속성 계획 (BCP)
- BIA : 장애나 재해로 인해 운영상 손실 볼 것을 가정하여 시간 흐름에 따른 영향도 및 손실 평가를 조사하는 BCP를 구축하기 위한 비즈니스 영향 분석
- RTO : 업무 중단 시점부터 업무가 복구되어 다시 가동될 때까지의 시간 (재해복구시점)
- RPO : 업무 중단 시점부터 데이터가 복구되어 다시 정상 가동될 때 데이터의 손실 허용 시점 (재해복구포인트)
- DRP : 재난으로 장시간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구 계획 (재해복구계획)
- DRS : 재해복구계획을 원활히 수행하기 위해서 평상시에 확보해 두는 자원 및 관리체계가 통합된 재해복구센터
DRS 유형
- Mirror Site : 실시간 동시 서비스가 가능한 재해복구 센터
- Hot Site : 주센터와 동일한 수준의 자원을 대기 상태로 원격지에 보유하면서 동기, 비동기 방식의 미러링을 통해 데이터의 최신 상태를 유지하고 있는 센터
- Warm Site : 중요성이 높은 자원만 부분적으로 보유하고 있는 재해복구 센터
- Cold Site : 데이터만 원격지에 보관, 재해 시 데이터를 근간으로 필요 자원 조달하는 재해복구 센터
파티션 종류
- 레인지 파티셔닝(Range Partitioning) : 연속적인 숫자나 날짜를 기준으로 하는 기법
- 해시 파티셔닝(Hash Partitioning) : 파티션 키의 해시 함숫값에 의한 기법
- 리스트 파티셔닝(List Partitioning) : 데이터에 대한 명시적 제어가 가능한 기법
- 컴포지트 파티셔닝(Composite Partitioning) : 레인지 파티셔닝 이후 해시 파티셔닝을 적용하는 기법
트랜잭션
인가받지 않은 사용자로부터 데이터를 보장하기 위해 가져야 하는 특성 (작업의 기본 단위)
종류
- 원자성 : 하나 실패면 전부 취소
- 일관성 : 항상 일관된 데이터베이스 상태를 보존
- 격리성 : 실행 중 다른 트랜잭션 접근 불가
- 영속성 : 결과는 영속적으로 저장되어야 한다.
상태변화
활동 부분완료 완료 실패 철회
TCL(트랜잭션 컨트롤 랭귀지)
Commit Rollback checkpoint
옵티마이저
- RBO (규칙기반 옵티마이저) : 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획 선택
- CBO (비용기반 옵티마이저) : 통계 정보로부터 모든 접근 경로를 고려한 질의 실행 계획을 선택
역할 : 쿼리 변환, 비용 산정, 계획 생성
암호 알고리즘
대칭키 (암호화 키 == 복호화 키)
- DES : 1975년 미국 연방 표준국(NIST)에서 발표
- AES : 2001년 미국 표준 연구소에서 발표, DES 상위호환
- SEED : 1999년 한국인터넷진흥원(KISA)
- ARIA : 2004년 국가정보원과 산학연협회, 학계(Academy), 연구기관(Research Institute), 정부(Agency)의 앞글자를 땀
비대칭 키 방식 (공개키 암호 방식)
- 디피-헬만 : 최초 공개키 알고리즘, 이산대수
- RSA : 1977년 3명의 MIT 수학교수, 소인수 분해하는 알고리즘 / 전자서명이 가능한 최조의 알고리즘, 소인수 분해의 난해함에 기반하여 공개키만으로는 암호를 쉽게 짐작할 수 없도록 한다.
일방향 암호 방식(해시 암호 방식)
- MD5 : MD4를 개선한 알고리즘
- SHA : 1993년 NSA, 미국 국가 표준으로 지정
- HAS-160 : 국내 표준 서명 알고리즘 160비트 해시 함수, SHA-1을 기반
클린코드 작성원칙 [가단의 중추]
- 가독성 : 누구나 코드를 쉽게 읽을 수 있도록 작성, 이해하기 쉬운 용어 사용, 들여쓰기 등
- 단순성 : 간단한 작성, 한 번에 한 가지 기능 처리, 클래스/메소드/함수는 최소 단위로 분리
- 의존성 최소 : 다른 모듈에 미치는 영향 최소화, 코드 변경 시 다른 부분에 영향 없도록 작성
- 중복성 제거 : 중복된 코드는 삭제하여 공통된 코드로 사용
- 추상화 : 상위 클래스/메소드/함수에서 간략하게 애플리케이션 특성을 나타내고, 상세 내용은 하위 클래스/메소드/함수에서 구현
* 클린코드(Clean Code) : 누구나 쉽게 이해, 수정, 추가 가능한 단순하면서 명료한 코드
* 나쁜코드(Bad Code) : 프로그램 로직이 복잡하고 이해하기 어려운 코드
* 외계인코드 : 너무 오래돼서 유지보수가 어려운 코드
* 스파게티 코드 : 소스코드가 복잡하게 얽힌 코드
테스트 자동화 도구
- 정적 분석 도구 (pmd, cpp check 등)
- 테스트 실행 도구
- 성능 테스트 도구
- 테스트 통제 도구
애플리케이션 성능 측정
- 처리량
- 응답시간
- 경과시간
- 자원 사용률
프로세스 스케줄링
응답시간 = 대기시간 + 수행시간
응답률 = (대기시간 + 서비스시간) / 서비스시간 -> HRN에서 우선순위로 사용됨
선점형 스케줄링 알고리즘
하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU 점유
- 라운드 로빈(RR) : 시분할 시스템 사용(시간 할당 단위로 왔다갔다 함)
- SRT:남은 시간이 가장 짧은 시간이 소요되는 프로세스부터 선점
- 다단계 큐 : 각 큐는 자신만의 독자적인 스케줄링 가짐
- 다단계 피드백 큐 : 마지막 단계는 라운드 로빈 방식 처리
비선점형 스케줄링 알고리즘
한 프로세스가 CPU할당 받으면 작업 종료 후 반환까지 다른 프로세스는 점유 할수 없다
- 우선순위
- 기한부
- FCFS(FIFO) : 도착한 순서에 따라 할당
- SJF : 프로세스가 도착하는 시점에 따라 가장 작은 서비스 시간을 갖는 프로세스가 종료까지 자원을 점유
- HRN : 대기 중인 프로세스 중 현재 응답률이 가장 높은 것을 선택 (응답시간이 클수록 우선순위 높아짐)
'자격증 > 정보처리기사' 카테고리의 다른 글
내가 공부하려고 정리하는 정보처리기사 실기 정리 (6/6) (1) | 2021.10.03 |
---|---|
내가 공부하려고 정리하는 정보처리기사 실기 정리 (5/6) (0) | 2021.10.02 |
내가 공부하려고 정리하는 정보처리기사 실기 정리 (4/6) (0) | 2021.10.01 |
내가 공부하려고 정리하는 정보처리기사 실기 정리 (2/6) (1) | 2021.09.29 |
내가 공부하려고 정리하는 정보처리기사 실기 정리 (1/6) (1) | 2021.09.28 |
댓글