WEEK1 Flashcards

1
Q

시스템 디자인이란 ?

A

주어진 목표를 달성하기 위해서 시스템 아키텍처, 시스템 구성 모듈, 인터페이스 데이터 등을 정의하는 과정

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

simple sns 시스템을 디자인 하려고 한다. 4가지 과정을 요약하자면 ?

A
  1. simple sns 가 sns 서비스를 제공하기 위해서 필요한 기능을 정의
  2. sns 서비스 구현을 위한 모듈, 구성요소 정의
  3. 시스템 디자인 -> 여러 디자인 고려, 대안책들 중 적합한 것을 선택
  4. 시스템 개선
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

simple sns 시스템 디자인 4가지 과정에서 각각의 과정의 예를 드시오

A
  1. sns 서비스 제공을 위한 필요한 기능 정의
    : 가입/등록 (신규사용자 가입 시 -> id/pwd 생성), 친구 요청/수락/거절 , 게시판에 글쓰기/글읽기
  2. 위에서 정의한 기능 구현을 위한 모듈 과 컴포넌트 정의 : 서버측 -> 웹서버(웹페이지 제공, 사용자 생성/관리, 친구관계 관리, 글 쓰기/읽기 etc), 데이터베이스(사용자 계정 정보 저장, 친구관계저장, 사용자가 작성한 글 저장 etc)
  3. 여러 시스템 디자인 고려하여 최선의 것을 선택
    : ex) 경제적 여건 때문에 일단, 웹 서버와 db 를 한 대의 서버 pc 에 설치
  4. 시스템 개선
    : 사용자 수가 증가하여 부하 발생 접속속도 느려지고 오류 발생 -> 디자인의 개선 ; 한대의 서버를 2개로 늘려서 기능에 따른 분할 (db 시스템, 웹 서버 시스템 으로 분할)

또다른 문제가 발생하면 다른 방법으로 계속 개선해 나감

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

서비스제공을위해서 한 대의 컴퓨터에 웹서버와 db 를 설치하게 되면 발생할 수있는 문제점은?

A

서비스사용자가 많아지게 되면 접속 속도 저하(응답시간 증가), 오류증가 등의 과부하가 생길 수있다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

한 대의 컴퓨터에 설치되어있는 웹서버와 db 를 컴퓨터 수를 늘려서 기능별로 분리 시키면 (한대 -> 웹서버, 다른 한 대 -> db) 장점은 ? 하지만 어떤 문제가 발생할 수 있을 까 ?

A

장점 : 접속 속도 증가, 오류 감소 (= 서비스 품질의 개선)

발생할 수 있는 문제 : 접속자와 사용자 수가 더 증가하여 품질이 다시 떨어 진다. 이 경우, 이제는 기능에 따른 분할이 불가하므로 시스템 확장을 위한 새로운 대안책이 필요함

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

시스템 확장 (scaling) 의 대표적인 두가지 방법은 ?

A

vertical scaling (vs; 수직적 확장; scaling up), horizontal scaling (hs ; 수평적 확장;scaling out)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

VS(vertical scaling) 이란 ?

A

기존의 시스템 장비/부품을 고 사양으로 대체하는 방법

예: 고성능 CPU로 교체, 고성능 메모리로 교체, 고성능 HDD로 교체

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

VS의 장점은 ?

A

서버 부품이 고성능으로 교체되어, 시간당 연산량/처리량이 증가함

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

VS의 단점은 ?

A

-VS 수행 중에는 서비스가 중단될 수 있다.
-VS은 무제한으로 할 수 없고, 장비 또는 기술의 한계에
제한된다
-부품 교체 시, 기존의 부품은 잘 활용이 안되어, 비용
낭비를 초래함

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

HS (Horizontal scaling) 이란 ?

A

you get the additional resources into your system by adding more machines to your network, sharing the processing and memory workload across multiple devices.
( 자원의 추가 -> 컴퓨터 혹은 장치를 네트워크에 추가하므로서 -> 부하를 분산시킴 -> 각 장치는 프로세싱과 메모리를 공유)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

scaling out 방법으로 웹서버를 1대에서 2대로 늘렸다고 하자. 그러면 발생할 수 있는 문제들은 ?

A

-부하(load)를 어떻게 분산시키나?
-누가 부하를 분산시키나?
웹서버가 2대로 늘어나면, —사용자는 어느 웹서버에 접속해야 하나?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

scaling out 방법으로 웹서버의 부하를 분산시킬 때 발생할 수 있는 의문들은 다음과 같다.
-누가 부하를 분산시키나?
-부하(load)를 어떻게 분산시키나?
웹서버가 2대로 늘어나면, —사용자는 어느 웹서버에 접속해야 하나?

각각에 대해 답하시오.

A
  • LB (Load balancer, 부하 분산자)를 도입
  • LB는 정해진 정책에 따라서 부하를 분산시킴
    (예: RR (round-robin) 기법;
    사용자의 요청이 들어오면 순차적으로 번갈아 가며 서버에 요청을 전달함;
    요청1=>서버1, 요청2=>서버2, 요청3=>서버1, 요청4=>서버2, …)
  • DNS 에서 주소요청하면 DNS 가 LB의 주소를 알려주고, 그 주소로 접속하여 LB에게 다시 서비스 요청을 하면, LB가 웹서버를 선택하여 응답해주면, 웹서버와 연결되어 서비스를 사용할 수 있음
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

만약 웹서버들 중 하나가 SHUT DOWN 되면 LB 가 SHUT DOWN 된 서버에 사용자들을 접속시켜서 문제가 발생할 수 있음. 이것을 해결 하기 위한 방법은 ?

A

LB는 heartbeat 메시지
교환을 통해 각각의 웹서
버 상태를 체크함 (ping)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

웹서버 늘리기 를 통해 웹서버 부하 문제는 해결했지만 웹서버 2대에서 한대의 DB로 서비스 요청을 보내고, DB성능이 이를 따라가지 못하여 응답시간이 느려지는 DB 병목 현상이 발생했다. 해결책은 ?

A

DB 늘리기 ;DB를 1대 더 추가하고, 데이터 타입에 따라 역할을 분리

EX)
• DB#1 : 사용자 계정 및 친구관계 정보만 저장/관리
• DB#2 : 사용자 게시 글만 관리

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

HA (High Availability; 고가용성) 이란?

A

-서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정
상 운영이 가능한 성질

  • 고 가용성=가용성이 높다=시스템이 고장 나지 않는다=서비스가 중단되지 않는다
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

고가용성을 실현하는 방법은 ?

A

여분의(redundant) 장비를 추가로 사용하면 고 가용성을 높일 수 있다

즉, “대기”하고있는 장비를 두고, 서비스중인 장비가 고장 나면 즉시 대체

17
Q

HA 클러스터 란?

A

서비스를 제공하는 다수의 장비로 구성된 그룹으로써, 시스템의 안정성을 높이고

downtime(중단시간)을 최소화 하고 uptime(가동시간)을 최대화 함

18
Q

HA 클러스터를 통한 장애극복이란?

A

하나의 장비가 고장나면 클러스터 내의 다른 장비가 서비스를 처리한다. 이러한 과정

을 failover(장애극복) 라고 한다.

19
Q

클러스터 내의 장비가 동작하는 2가지 방법은 ?

A

클러스터 내의 장비는 active-active 또는 active-standby 모드로 동작한다.

20
Q

HA 클러스터가 동작하는 방법 중 하나인 Active-active 란?

A

두 대의 장비가 모두 활성화 되어 서비스를 제공하고, 한대의 장비에 문

제가 생기면 해당 장비는 사용하지 않음

21
Q

HA 클러스터가 동작하는 방법 중 하나인 Active-standby 란?

A

한대는 active, 다른 한대는 standby 모드로 설정하고, active 상태인
장비만 서비스를 제공함. Active 장비가 고장나면, 즉시 standby 장비가 active 상태로
전환하여 서비스를 제공

22
Q

이것을 우리가 개발하는 Simply SNS 서비스의 LB 가용성을 위해 적용 시키면 ?

A

LB 를 두대로 하여 한개는 active 모드, 다른 하나는 stand-by 모드로 한다. active 인 LB 가 고장나면 standby 상태였던 다른 LB 가 대체한다.

23
Q

웹서버에 접근하는 사용자가 더더욱 늘어나거나 웹서버 두대가 동시에 고장나면 ?

A

웹서버를 확장하여 HA 클러스터를 확장시킴 (Horizontal scaling + HA clustering)

24
Q

사용자수가 늘어나 DB로 인한 병목현상이 발생하거나 DB 장애가 발생하면?

A

DB 서버를 확장하여 HA 클러스터 확장시킴 (Horizontal scaling + HA clustering)

25
Q

동기화란 무엇인가 ?

A

동일한 데이터나 파일의 내용이 하나 이상의 장소(혹은 장치)에서 동일하게 유지 되게 하는 것을 의미함

26
Q

같은 역할을 하는 DB가 다수일 때 동기화 필요한가? 그 이유는 ?

A

예를들어 친구목록을 관리하는 DB 서버가 여러 대인데 그 중한대만 업데이트를 하게 되면, 다른 DB가 동기화 되지 않을 경우, 친구목록이 달라질 수 있음.

27
Q

HA 클러스터로 묶인 장비들 간에 주기적으로 필요한 것은 ?

A

Heartbeat 체크 (shut down 되었는지여부를 체크하기 위해서) ; ping

28
Q

같은 역할을 하는 DB 간에 필요한 것은 ?

A

동기화

29
Q

각각의 웹 서버는 여러개의 DB 중에서 어떤 DB 를 사용하는 가 ?

A

물리적으로 가깝거나 부하량이 적은 DB 사용 (처

리/응답시간 감소를 위해)

30
Q

응답시간을 줄어서 서비스 품질을 개선하려고 한다. 빈번하게 access 되는 데이터가 있다는 가정하에 어떤 방법을 사용할 수 있을 까?

A

빈번하게 호출되는 데이터를 db (= 하드 디스크) 대신에 응답시간이 빠른 캐시(on-chip memory)에 저장한다.

31
Q

응답 시간 속도를 높이기 위해 캐시 시스템을 도입했을 때, 어떤 방식으로 작동하는 가?

A

접근할 데이터가 캐시 시스템에 있는지를 먼저 확인하고, 없으면 DB 에서 데이터 읽어옴

32
Q

simply sns 사용자가 많이 늘어서 horizontal scaling + HA clustering 을 했는데, 갑자기 90% 사용자가 탈퇴한다면?

A
  • 대부분의 시스템 자원이 사용되지 않음
  • 비용 낭비 (서버 등등의 구입비가 낭비되고, 서버 운영비도 낭비됨)
  • HS (horizontal scaling) 방식으로 성능 확장을 한 경우, 일부 장비를 제거하여 다른
    시스템의 성능 확장에 사용할 수 있음
33
Q

사용자의 90 % 가 탈퇴해서 서버 성능을 줄였는데, 갑자기 사용자가 100배 폭증한다면?

A
  • 서버의 성능을 줄여놓은 상태이므로, 서비스 품질이 크게 저하됨

- HS 방식으로 시스템 성능을 다시 확장해야함

34
Q

HS 방식의 단점은 ?

A

서비스에 장애 없이 성능을 높이거나 줄일 수 있지만,

이 과정에서 서버 재배치, OS/SW 설치 등에 시간+노력이 필요함

35
Q

VS/HS 방식의 공통된 단점 2가지는 ?

A
  1. 새로운 부품/장비 등을 구매해야 하는데, 이 과정에서 많은 비용+시간+노력이 필요함
    (-부품/장비 구매 시, 초기 비용이 큼
    -특히, 특수 목적으로 제작된 서버 구매 시 오랜 시간을 기다려야 함
    기다리는 기간 동안의 서비스 품질 저하를 막을 수 없음)
  2. VS/HS 방식으로 시스템이 확장되는 경우, 이에 따른 운영비가 증가함 (서버실 운영비 (전기, 냉방 등, 서버실 관리자 인건비 등)
36
Q

기존의 성능 확장 방식 (vs/hs )의 2가지 단점은 ?

A
  1. 비용과 시간이 많이 필요함.

2. 사용자 트래픽이 시시각각 큰 폭으로 변동하는 경우, 빨리 대응할 수 없음

37
Q

적은 비용으로 동적으로 신속하게 시스템 성능을 높였다가 낮출 수 있을까

A

yes -> 클라우드 컴퓨팅 기술을 이용하면 됨