facade pattern 소프트웨어 공학 디자인 패턴중 하나로 여기서 facade란 

    • 소프트웨어 라이브러리를 쉽게 사용할 수 있게 
    • 쉽게 이해할 수 있게
    • 코드를 읽기 쉽게
    • 공통적인 작업데 대해 간편한 메소드를 제공
    • 또한 라이브러리 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소
    • 좋게 작성되지 않은 API의 집합을 하나의 좋게 작성된 API로 감싸 사용

해 커다란 코드 부분에 대한 간략한 인터페이스를 제공하는 것 이다.


간단한 예로 라면끓여 먹으려면 

1
2
3
4
5
6
7
8
//물을 받고
getWater{};
 
//불을 키고
setFire{};
 
//라면을 넣고
setRamen{}

이런 메소드를 호출애햐 하는데 이를 하나의 메소드 또는 인터페이스로 정의한 다음 다른 곳에서 사용할때는 아래외 같이 

1
2
3
4
5
6
7
8
9
10
doRamen(){
//물을 받고
getWater{};
 
//불을 키고
setFire{};
 
//라면을 넣고
setRamen{};
};

doRamen()을 사용해 쉽게 사용할 수 있도록 하는 페턴을 말한다.

'프로그래밍 > 그외' 카테고리의 다른 글

DB Savepoint  (0) 2016.06.21
scheduling - 스케줄링  (0) 2016.06.01
DI (Dependency Injection)  (0) 2016.05.26
First Class Object  (0) 2016.05.25

DB Savepoint 란 DB Transaction내에서 하위 Transaction을 실현하기 위한 데이터베이스 언어인  SQL 구문 중 하나이다.

Transaction 내에 특정 지점을 지정하면 그 이전애 실행된 내용과 상관없이 아래 내용을 실행중 오류가나면 Savepoint이후에 실행된 부분만 롤백 할 수 있다.

단일 Transaction 에 여러 Savepoint 생성할 수 도 있다.

savepoint 는 표준 SQL 에도 채용하고 있어 많은 관계형 DB에서 지원하고 있다.(PostgreSQL, Oracle DB, MS SQL Server, MySQL...)


예제)

UPDATE employees 
    SET salary = 7000 
    WHERE last_name = 'Banda';
SAVEPOINT banda_sal;

UPDATE employees 
    SET salary = 12000 
    WHERE last_name = 'Greene';
SAVEPOINT greene_sal;

SELECT SUM(salary) FROM employees;

ROLLBACK TO SAVEPOINT banda_sal;
 
UPDATE employees 
    SET salary = 11000 
    WHERE last_name = 'Greene';
 
COMMIT; 

위의 예제를 보면 banda_sal 라는 Savepoint 를 생성하고 하위 에 greene_sal 라는 Savepoint 를 추가로 생성하였다. 그리고 banda_sal 하위에서 업데이트를 한 후 banda_sal 를 롤백 하고 다시 하위에 업데이트를 했다. 


(예제 출처 : https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_10001.htm)

'프로그래밍 > 그외' 카테고리의 다른 글

facade pattern  (1) 2016.06.21
scheduling - 스케줄링  (0) 2016.06.01
DI (Dependency Injection)  (0) 2016.05.26
First Class Object  (0) 2016.05.25

스케줄링이란,

다중 프로그래밍을 가능하게 하는 운영체제의 동작기법으로 운영체제는 프로세스들에게 CPU 등의 자원 배정을 적절히 함으로써 시스템의 성능을 개선시킨다.


다중 프로그래밍이란 CPU이용율을 최대화 하기 위해 항상 실행중인 프로세스를 시도하는 것이다.


스케줄링의 목적

    • 응답시간의 최소화
    • 처리량 극대화
    • 균형있는 자원 사용


스케줄링 단계

    • 1단계 스케줄링
      • 작업(job) 스케줄링, 승인(admission) 스케줄링. 장기(long-term) 스케줄링으로 어느작업을 선택해 시스템의 자원을 이용하게 할 것 인가를 결정
    • 2단계 스케줄링
      • 작업 프로세스들 중에서 어느 것을 활성화 시키고, 보류 시킬지 결정
    • 3단계 스케줄링
      • CPU 스케줄링, 단기(short-term) 스케줄링으로 CPU가 사용가능한 경우 프로세스들 중 어느 프로세스에게 CPU를 할당할 것인지 결정

CPU 스케줄링의 결정 시점 프로세스의 상태 변화에 결정된다.
    1.  수행 -> 대기
    2.  수행 -> 준비
    3.  대기 -> 준비
    4.  수행 -> 종료
의 4가지 시점이 있고 위의 프로세스의 상태는 아래와 같다.

    • 생성 : 프로세스 생성
    • 실행 : 프로세스가 CPU를 차지하고 있는 상태
    • 준비 : CPU에 할당되기를 기다리는 상태
    • 대기 : I/O(입출력)가 완료되기를 기다리는 상태
    • 종료 : 프로세스의 실행 종료



스케줄링에는 선점형과 비 선점형, 정적과 동적 스케줄링이, 그리고 우선순위라는 개념이 있다.

  • 선점형(Preemptive) 스케줄링
    • 프로세스가 CPU를 차지하고 있을때, 다른 프로세스가 현재 프로세스를 중지 시키고 CPU를 차지할 수 있도록 하는 방법
    • 우선순위가 높은 프로세스를 먼저 수행하는데 유리
    • 실시간 처리에 유리
  • 비 선점형(Non-Preemptive) 스케줄링
    • CPU가 프로세스에 할당되면 종료,또는 대기상태로 전환해 CPU를 해제할 때 까지 현제 프로세스가 CPU를 점유 하는 방법
    • 순차 처리로 공정성이 있고 응답시간의 예측 가능
    • 짧은 작업이 긴 작업을 기다리는 경우 자주 발생
  • 우선순위 : 프로세스에 우선순위를 부여해 프로세스의 처리 순서를 결정
    • 우선순위에 따른 선점형과 비 선점형의 비교
      • 선점형 : 우선순위가 높은 프로세스가 현재 CPU를 사용하고 있는 프로세스를 종료하고 CPU를 차지
      • 비선점형 : 최상위 준비 큐에 우선순위가 높은 프로세스를 위치시킨다.
  • 정적(Static) 스케줄링 :  스케줄링 과정에서 프로세스에 부여된 우선순위가 변경되지 않는다.
  • 동적(Dynamic) 스케줄링 : 스케줄링 과정에서 프로세스의 우선순위가 변동된다.



스케줄링의 목적은 위와 같은 개념들에서 CPU이용율, 처리율을 최대화 하고 반환시간, 대기시간, 응답시간을 최소화 하는 기법이다.

    • CPU이용율 (CPU Utilization) : 가능한 CPU를 최대한 이용
    • 처리율 (Throughput) : 단위 시간당 완료할 수 있는 프로세스의 수
    • 반환시간 (Turnaround time) : 프로세스 시작부터 준비, 대기, 종료 되기 까지의 시간
    • 대기시간 (Waiting time) : 프로세스가 준비상태에서 대기하는 시간
    • 응답시간 (Response time)  
      •  프로세스가 어떤 요청을 한 후 그에 대한 첫 응답을 받을때 까지 걸리는 시간으로 응답을 출력할때 걸리는 시간은 포함되지 않는다.



'프로그래밍 > 그외' 카테고리의 다른 글

facade pattern  (1) 2016.06.21
DB Savepoint  (0) 2016.06.21
DI (Dependency Injection)  (0) 2016.05.26
First Class Object  (0) 2016.05.25

+ Recent posts