귀하는 IT회사의 보안관제실에서 근무하고 있다.
정보시스템 운영 중 자연재해나 시스템 장애 등의 이유로 대고객 서비스가 불가능한 경우가 종종 발생한다.
이를 대비하여 백업 및 복구 솔루션을 도입하고자 한다.
백업 및 복구 솔루션은 ( )와 복구 목표 시점(RPO) 기준을
충족할 수 있는 제품으로 선정해야 한다. ( )는
“비상사태 또는 업무중단 시점으로부터 업무가 복구되어 다시 정상가동 될 때까지의 시간” 을 의미하고
복구 목표 시점(RPO)는 "업무 중단 시 각 업무에 필요한 데이터를 여러 백업 수단을 이용하여 복구할 수 있는 기준점"을
의미한다.
RTO (복구시간목표, Recovery Time Object)
RPO (복구시점목표, Recovery Point Object)
>>> asia={"한국", "중국", "일본"}
>>> asia.add("베트남")
>>> asia.add("중국")
>>> asia.remove("일본")
>>> asia.update(["홍콩", "한국", "태국"])
>>> print(asia)
'비동기식 자바스크립트 XML'을 의미하는 용어로,
클라이언트와 웹서버 간에 XML 데이트를 내부적으로 통신하는 대화식 웹 애플리케이션의 제작을 위해 사용된다.
클라이언트의 요청에 의해 웹서버에서 로딩된 데이터를 웹 브라우저의 페이지에 보여주기 위해
웹 페이지 전체를 '새로고침'할 필요 없이 즉, 현재 페이지에서
필요한 일부만 로딩되도록 하는 웹 개발 기법을 의미한다.
고객의 요구사항 변화에 유연하게 대응하기 위해 일정한 주기를 반복하면서 개발하며
고객에게 시제품을 지속적으로 제공하며 고객의 요구사항이 정확하게 반영되고 있는지 점검한다.
폭포수 모형에 대비되는 유연한 방법론으로 비교적 소규모 개발 프로젝트에서 각광받고 있는 개발 방법론이다.
시제품이라는 단어 때문에 프로토타입 같으나, 고객의 요구사항 변화에 초점을 둔다는 내용을 통해
애자일(Agile) : 절차나 문서보다 사람과 업무 자체를 중요시하고 유연하고 신속한 개발을 추구하는 방법론에 적합하다.
class Parent {
void show() {
System.out.println("Parent");
}
}
class Child extends Parent {
void show() {
System.out.println("Child");
}
}
public class Exam {
public static void main(String[] args) {
Parent pa = ( ? ) Child();
pa.show();
}
}
[처리결과]
Child
IPsec
IP adress와 IP는 별개
소프트웨어 테스트
정적 테스트(Static Test) : 소프트웨어를 실행하지 않고 코드나 문서로 리뷰하는 형식
한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로
일 대 다(one-to-many) 의존성을 가지는 디자인 패턴.
서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합(Loose coupling)하는 디자인을 사용해야 한다.
Gof(Gang of Four Design Pattern) 디자인 패턴 : 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴
큰 구분
생성 패턴(Creational Pattern)
명칭 | 특징 |
---|---|
팩토리 메소드(Factory Method) | 객체를 생성하기 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브클래스가 결정 |
추상 팩토리(Abstract Factory) | 서로 연관, 의존하는 객체들의 그룹을 생성하여 추상적으로 표현 |
빌더(Builder) | 분리된 인스턴스(객체)를 건축하듯 조합하여 새 객체를 생성 |
프로토타입(Prototype) | 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴 |
싱글톤(Singleton) | 여러 프로세스가 하나의 객체를 참조하는 방식 |
구조 패턴(Structual Pattern)
명칭 | 특징 |
---|---|
어댑터(Adaptor) | 클래스들의 호환성이 맞도록 변환해주는 패턴 |
브리지(Bridge) | 서로가 독립적으로 확장할 수 있도록 한 패턴, 기능과 구현을 별도의 클래스에서 구현(다리 놓듯이) |
컴포지드(Composite) | 단일 객체와 복합 객체를 구분 없이 합성물처럼 다루고자 할 때 사용 |
데코레이터(Decorator) | 객체간의 결합으로 기능을 확장하는 것으로 부가적인 기능 추가를 위해 다른 객체들을 덧붙이는 방식 |
퍼싸드(Facade) | 커다란 코드 부분에 대한 간략화된 인터페이스를 제공함으로써 간단하게 복잡한 명령을 수행 가능 |
플라이웨이트(Flyweight) | 인스턴스를 가능한 한 공유해서 사용해서 메모리 절약 |
프록시(Proxy) | 접근이 어려운 객체와 여기 접근하려는 객체 사이의 인터페이스 역할 |
행위 패턴(Behavioral Pattern)
명칭 | 특징 |
---|---|
책임 연쇄(Chain of Responsibility) | 요청을 한 객체가 처리 못하면 다음 객체로 책임이 넘어가는 패턴 |
커맨드(Command) | 요청을 캡슐화하여 재이용하거나 취소할 수 있도록 로그로 남겨두면서 명령어를 하나로 합쳐둔 것 |
인터프리터(Interpreter) | 언어 번역하는 것으로 언어에 문법표현을 정의함, SQL이나 통신 프로토콜에 이용 |
반복자(Iterator) | 같은 명령의 반복이고 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 함 |
중재자(Mediator) | 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하므로써 객체 사이의 결합도를 줄임 |
메멘토(Memento) | 객체를 특정 시점의 상태로 되돌리는 기능으로 내가 사랑하는 CTRL + Z 기능 개발시 사용 |
옵저버(Observer) | 한 객체의 상태 변화시 상속되어있는 다른 객체들에게 알림, 시스템간에 이벤트를 생성하고 수신시 사용 |
상태(State) | 객체의 상태에 따라 동일한 동작을 다르게 처리할 때 사용 |
전략(Staregy) | 동일한 계열의 알고리즘을 캡슐화하여 상호 교환할 수 있게 함으로써 클라이언트에 영향 없이 알고리즘 변경 가능 |
탬플릿 메소드(Template Method) | 상위 클래스에서 골격 정의, 하위 클래스에서 세부 처리를 구체화함으로써 유지보수를 용이하게 함 |
방문자(Visitor) | 각 클래스들의 데이터 구조에서 처리 기능을 별도의 클래스로 구성하여 각 클래스에서 방문해서 수행가능하게 함 |