https://youtu.be/4EAeVNs4T6Q?si=hqgtZr6Oi6pDYrhN
1. 시스템 아키텍처와 소프트웨어 설계
1-1. 코드의 역할과 유형 이해
- 코드는 기호 체계로 숫자나 문자로 표현한 것임
- 코드의 역할은 식별, 분류, 배열의 기능을 함
- (중요) 코드의 유형은 순차 코드, 블록 코드, 십진 코드, 표준화 코드 등이 있음
- 순차 코드는 번호가 부여되는 형태로, 블록 코드는 항목의 특성에 따라 코드가 진행되는 형태임
- 십진 코드는 0-10진수로 번호를 부여하며, 그룹 분류 코드는 0-7의 6개 레벨로 분류 가능함
1-2. 시스템 연동과 소프트웨어 아키텍처
- 시스템 연동은 데이터나 특정 상황을 표현하고 관리하기 위해 필요함
- 시스템 연동의 종류로는 데이터 연동, 인터페이스 연동, 웹 서비스 연동이 있음
- 웹 서비스 연동을 구성하는 요소로는 서비스 브로커, 프로바이더, 리캐스터 등이 있음
- 소프트웨어 아키텍처는 시스템 아키텍처를 기반으로 설계된 소프트웨어의 기본 구조를 정의함
- (중요) 아키텍처 패턴을 통해 적절한 소프트웨어 아키텍처를 선택하고 개발할 수 있음
1-3. 소프트웨어 아키텍처의 구체적인 형태와 특성
- 소프트웨어 아키텍처의 첫 번째 패턴인 계층화 패턴은 시스템을 논리적인 레이어 구조로 분리함
- 서비스 지향 아키텍처는 사용자와 시스템 간의 상호작용을 중심으로 설계됨
- (중요) 아키텍처 패턴은 유지보수를 편하게 하고, 좋은 성능을 제공함
- 아키텍처 패턴 선택 시, 품질 요구사항을 만족하는 아키텍처를 선택해야 함
2. 디지털 시스템의 패턴과 원리 이해
2-1. 디지털 시스템의 계층과 패턴 분류
- 디지털 시스템은 1티어(하급 계층)와 2티어(중간 계층), 3티어(상급 계층)로 나눠짐
- 서비스 계층이 애플리케이션 계층과 같이 비슷한 의미의 계층으로 표현될 수 있음
- 클라이언트-서버 패턴은 서비스를 제공하는 서버와 서비스를 요청하는 클라이언트로 구성됨
- 마스터-슬레이브 패턴은 작업을 분리하고 배포하는 마스터가 작업을 배정하고 슬레이브가 작업을 수행하는 패턴임
- 파이프 필터 패턴은 서브 시스템에 입력된 데이터를 처리한 결과를 파이프를 통해 다음 서브 시스템으로 전달하는 과정임
2-2. 브로커와 피어 투피어의 이해
- 브로커는 다수의 서버와 클라이언트 사이에서 중개자를 두어, 요청이 잘 전달될 수 있게 함
- 피어 투피어는 각 컴포넌트가 모듈이 될 수도 있고 노드가 될 수 있게 하는 패턴임
- 이벤트 버스 패턴은 데이터와 처리 결과를 특정 채널에 전달하고, 구독자들은 이 채널에 구독된 메시지에 대해 알림을 수신하는 패턴임
- (중요) 블랙보드 패턴은 결과가 정해져 있지 않은 해결 전략을 구현하는 패턴임
2-3. 비결정성 알고리즘과 시스템 동작 이해
- 비결정성 알고리즘은 기존 지식과 패턴 매칭을 통해 데이터를 검색하는 패턴임
- 이 패턴은 내비게이션에서 찾아낸 경로가 항상 정해져 있지 않음
- 모델은 데이터 처리를 담당하고, 뷰는 시각화를 담당하며, 컨트롤러는 모델과 로직의 상호작용을 담당함
- 사용자의 UI 조작이 컨트롤러에 전달되어, 컨트롤러는 모델에 요청하고 정보를 반환함
- (중요) 컨트롤러는 정보를 사용자에게 출력하여 사용자의 사용 경험을 향상시킴
3. 웹 아키텍처의 기초 이해
3-1. 웹 아키텍처의 구성 요소 이해
- 웹 아키텍처의 세 가지 주요 구성 요소는 데이터, 인식, 표현
- 데이터는 웹 환경에서 처리하는 데이터를 의미함
- 인식은 사용자의 요청이 웹 시스템에 어떻게 이해되는지, 그리고 웹 시스템이 어떻게 사용자의 요청을 이해하는지에 대한 이해
- 표현은 웹 시스템이 어떻게 표현되는지, 그리고 그 표현이 어떻게 사용자에게 전달되는지에 대한 이해
3-2. 블랙보드 패턴과 인터프리터 패턴의 활용
- 블랙보드 패턴은 웹 환경에서 정보를 관리하는 방법을 설명함
- (중요) 이 패턴을 통해 번호판, 주차장 인식 등의 정보를 처리
- 인터프리터 패턴은 언어나 명령어 등을 해석하여 기능을 수행하도록 하는 방법을 설명함
- 특정 언어로 작성된 표현식 등을 해석하고, 이를 기반으로 설계를 진행
3-3. 미들웨어 솔루션과 웹 서버의 역할
- 미들웨어 솔루션은 웹 환경에서 동적 콘텐츠를 제공하는 방식을 설명함
- 웹 서버는 웹 브라우저의 요청에 응답하여 정적인 웹 콘텐츠를 제공함
- (중요) 이 맥락에서 웹 애플리케이션 서버는 동적인 웹 콘텐츠를 제공함
- 이는 사용자 요청에 따라 웹 서버가 이미지, 영상 등의 동적 콘텐츠를 제공하도록 함
00:02
두 번째 섹션 시스템 연동 설계 같이 한번 보도록 하겠습니다. 크게 어려운 개념은 없는데 내용이 조금 많아요. 내용이 많지만 외워야 할 부분은 그렇게 또 많지도 않은 뭐 어중간한 부분입니다. 같이 한번 볼게요 자 일단 시스템 코드 설계에 대해서 좀 나와 있습니다. 코드가 뭔지에 대해서 좀 봐야겠죠. 우리가 알고 있는 프로그래밍의 소스 코드랑은 다른 개념이에요. 일단 기본적으로 코드라는 것 자체를 설명하고 있습니다. 간단하게 보면 기호체계입니다. 이 기호를 숫자나 문자로 표현한 거죠. 그걸 코드라고 표현을 합니다. 코드의 역할이나 기능은 일단 기본적으로 세 가지 식별 분류 배열의 기능을 하고요. 그다음에 조금 더 나아가자면 표준화 간소화 연상 암호화 오류 검출 이런 기능들이 있다. 이렇게 기억을 하고 계시면 되겠습니다.
00:59
코드의 유형이 굉장히 다양한데 이 부분은 아래에서 하나하나 보도록 할게요 자 그렇게 어렵진 않습니다. 간단하게 보시면 돼요. 순차 코드는 말 그대로 순서대로 일정하게 번호를 부여받는 거예요. 1번 2번 3번 4번 이런 식으로 쭉 추가하는 형태의 가장 기본적인 형태죠 자 그다음에 블록 코드는 항목들의 특성별로 블록으로 구분을 한 뒤에 그 안에서 순차 코드가 진행이 되는 겁니다. 여기 보면 경제는 01번 이렇게 되어 있죠. 그러면 01-0101-03 이런 식으로 01이 붙은 다음에 그 뒤에 순서대로 순차 코드가 붙는 이런 형태라고 보면 됩니다. 이 아래쪽에 보시면 각각의 코드 특성이 나와 있는데, 읽어보시면 크게 어려운 개념은 아니에요. 넘어갈게요 자 이번에는 십진코드입니다.
01:52
코드의 좌측에서 우측으로 갈수록 세분화되는 그룹을 정의하여 10진수로 번호를 부여한다라고 되어 있어요. 자 십진수로 번호를 부여하기 때문에 당연히 최대 10개 항목까지만 구분을 할 수 있습니다. 여기서 보시면은 경제 여기 100번이라고 되어 있죠. 컴퓨터 200번 문학 300번 이런 식으로 그러면 경제 컴퓨터 문학과 같은 레벨의 분류는 앞으로 7개까지만 더 진행을 할 수가 있는 거죠. 정확하게는 6개겠죠. 자 어쨌든 그렇고 좀 컴퓨터 안에서 또 프로그래밍 디자인 요렇게 늘어나게 되면 요 2는 고정되어 있는 상태에서 요 다음 부분 요 다음 중간에 있는 숫자가 바뀌면서 분야가 확장되는 거고요. 넘어오게 되면은 마찬가지 이 1은 가만히 있고 이 마지막에 있는 요놈 요놈이 증가되면서 분류가 되는 거죠.
02:49
이런 식으로 이제 분류하는 걸 10진 코드라고 이야기를 합니다. 그룹 분류 코드 나와 있어요. 전체 대상을 대중소 분류 형태로 구분을 해서 무조건 대중소는 아니지만, 구분해서 순차 번호를 부여하는 방법이에요. 대신 이거는 10진 코드랑 다르게 분류 개수에 제한이 있지 않습니다. 왜냐하면, 여기 아래도 보시는 것처럼 문자들도 가능해요. 그다음에 2자리 표현도 가능하고 그렇기 때문에 어떤 규칙인지만 알고 있으면은 뭔가 확장을 조금 더 할 수 있는 형태가 됩니다. 이 정도 보고 아래쪽에 연상 코드 말 그대로 연상이 가능하게끔 코드를 부여하는 겁니다. 이 코드만 봐도 얘가 아래쪽에 예를 들어 모니터라고 하면 32인치구나 커브드구나 평면 모니터구나 이런 것들을 알 수가 있다. 라는 거죠. 요걸 표의성이라고 표현을 말 그대로 의미가 티가 난다는 거죠. 그렇게 보시면 될 것 같습니다.
03:48
아래쪽으로 표의 숫자 코드라고 되어 있습니다. 측정 가능한 수치를 조합해서 부여를 한다라고 되어 있습니다. 여기 보면은 이 치수만 봐도 얘가 지금 가로 얼마 세로 얼마다 이런 것들을 이제 확인할 수 있다는 거죠. 그런데 이 크기라는 게 엄청 세밀하게 표현되는 게 아니기 때문에 일단은 길어지기도 하고 중복 값이 발생할 수 있어요. 다른 코드랑 겹칠 수 있다는 거죠. 그렇기 때문에 요거를 그렇게 자주 쓰진 않을 거예요. 자주 쓰고 안 쓰고는 문제 출제에 아무 영향이 없습니다. 그다음에 합성 코드는 위에 있는 여러 가지 코드를 종합하는 그런 형태라고 보면 되겠구요. 이런 코드들이 있다라고 판단을 하면 되겠습니다. 자 이 코드를 지금 왜 배우냐면 우리가 그 시스템 연동을 할 때 데이터라든지 아니면 어떤 특정 상황 이런 것들을 이제 표현을 해야 되는데 이 표현이 약속이 되어 있어야 되거든요.
04:45
상황을 길게 계속 늘어뜨릴 수는 없으니까 코드 a01 상황이다. 이런 식으로 오류 c550 오류다 이렇게 표현을 할 때 사용을 하는 코드 이런 코드에 대해서 같이 한번 공부를 해본 겁니다. 넘어갈게요 코드를 배웠고 이제 시스템 연동에 대해서 직접적으로 공부를 해볼게요 어려운 말은 아니죠. 연동이라는 말 자체가 시스템끼리 서로 접속을 통해서 업무를 수행하는 체계를 시스템 연동이라고 합니다. 연동이 어려운 개념은 아니니까 종류가 데이터 연동이 있고 인터페이스 연동이 있고 웹 서비스 연동이 있다고 되어 있어요. 데이터는 말 그대로 데이터를 공유하는 거구요. 인터페이스는 이런 것들을 통해서 서로 연계를 한다는 개념이고 웹서비스는 말 그대로 네트워크상에서 웹을 통해서 웹 서비스를 통해서 연동을 한다는 거죠.
05:40
여기에서 웹 서비스 연동을 구성하는 요소들이 나와 있는데, 이 요소들이 문제에 나온 적이 있고요. 그다음에 여기 보면 서비스 브로커 프로바이더 리캐스터라는 부분 있죠. 얘네들도 문제 나온 적이 있습니다. 꼼꼼하게 좀 봐주시면 좋을 것 같고요. 어떤 요소들이 포함되어 있는지 정도 그다음에 여기에 있는 애들은 뒤쪽에서도 계속 나올 거예요. 그러니까 이것도 영어 단어 외우듯이 여기 보면은 이기종 시스템의 데이터 서비스 호출을 위한 거다 그다음에 웹 서비스 검색을 위한 거다 웹 서비스를 기술하기 적어낸다는 뜻이죠. 기술하기 위한 거다 이 정도 영어 단어 외우듯이 외우고 넘어가시면 되겠습니다. 자 다음으로, 소프트웨어 아키텍처입니다. 시스템 아키텍처를 먼저 좀 보고 있는데요.
06:34
시스템 전체에 대한 논리적인 기능 체계의 구성 방식 이런 것들을 표현하는 걸 시스템 아키텍처라고 이야기를 하고요. 이거를 표현을 함으로써 우리는 시스템의 동작 원리를 파악할 수가 있다. 이런 느낌이라고 보시면 되구요. 그다음에 소프트웨어 아키텍처는 소프트웨어의 기본 구조를 정의한다. 소프트웨어의 방금은 시스템이죠. 소프트웨어의 설계 및 구현을 위한 틀을 제공한다. 그런데 이걸 이제 시스템 아키텍처를 기반으로 해서 생성이 된다라는 거죠. 제약을 거는 상위 개념이라고 여기 나와 있는 겁니다. 당연한 얘기죠 시스템을 기반으로 소프트웨어를 제작을 하기 때문에 소프트웨어 구성 요소들의 상호관계를 정의할 수 있다. 소프트웨어 아키텍처니까요? 요정도 하고 아키텍처를 기반으로 설계된 소프트웨어는 당연히 좋은 여러 가지 장점이 있겠죠. 장점이 없으면 안 쓰면 되니까요?
07:33
자 그래서 품질 요구사항을 만족할 수 있는 아키텍처들 중에 적절한 걸 선택을 해야 된다. 이렇게 보면 되겠습니다. 아래쪽에 나와 있지만 이 얘기랑 이 얘기랑 똑같은 얘기예요. 결국에 이렇게 여러 가지 방법을 정하고 명세화하고 이런 것들은 결국에 다 의사소통을 하기 위해서 나중에 유지보수를 편하게 효율적으로 개발을 하기 위해서다 요게 가장 큰 핵심이죠. 자 그래서 아키텍처 패턴을 여러 가지 볼 거예요. 소프트웨어 아키텍처 첫 번째로, 계층화 패턴입니다. 시스템을 논리적인 레이어 계층 구조 영어로 레이어예요. 이 레이어로 분리를 해서 서로 인접한 레이어끼리만 상호작용을 하는 겁니다. 이렇게 이렇게 이렇게 나눠놓고 여기서 여기서 이렇게 통신하는 이런 형태를 얘기하는 겁니다. 물리적으로 분리하는 엔티어 패턴과 그다음에 서비스 지향 아키텍처 soa 패턴이 있다. 이렇게 보시면 되는데 어떤 건지는 밑에 나와 있습니다.
08:32
여러분들은 다음 페이지겠죠. 자 일단은 n 티어라는 거는 이 n 부분이 숫자예요. 그래서 1티어 2티어 3티어가 있는데, 1티어는 하나의 계층으로 묶은 거고, 2티어는 2개 3티어는 3개의 계층으로 묶은 겁니다. 그래서 클라이언트 어플리케이션 데이터 계층을 하나로 묶은 게 1티어 클라이언트랑 애플리케이션을 묶고 나머지 데이터는 따로 묶은 거 이거를 2티어 그다음에 각각 별도로 놔둔 걸 3티어 이렇게 한다고 보시면 되고요. 그다음에 soa 같은 경우에는 이렇게 계층이 5가지로 나뉜다 이렇게 보시면 되는데 이 soa 계층들이 이름이 그대로 나오지 않습니다. 문제에 따라 조금씩 다를 수 있기 때문에 전혀 상관없는 부분을 선택한다고 보셔야 돼요. 예를 들어서 여기 써있듯이 표현 계층이 ui 계층으로 나올 수 있구요.
09:30
서비스 계층이 애플리케이션 계층 이런 식으로 비슷한 의미의 계층으로 표현이 되는 경우도 있어요. 그렇기 때문에 기존 계층과 최대한 관계없는 보기를 선택하는 느낌으로 접근을 하면 되겠습니다. 다음으로, 클라이언트 서버 패턴 이거 많이 들어봤죠 서비스를 제공하는 서버와 서비스를 요청하는 클라이언트로 구성이 된다 라고 하는데 보통 서버는 이제 하나의 물리적으로 하나는 아닌데 이제 한 공간이라고 보시면 돼요. 하나의 서버와 그다음에 다수의 클라이언트로 구성이 된다라고 되어 있죠. 그래서 이 클라이언트들이 서비스를 요청을 하면은 서버는 제공을 하는 형태 이런 형태를 이제 클라이언트 서버 패턴이라고 하고요. 자 비슷한 게 마스터 슬레이브 패턴이 있어요. 요즘에는 이제 마스터 슬레이브라는 요 단어 자체가 보감이 좋지 않아서 주부 이렇게 표현을 하기도 하는데 프라이머리 세컨더리 이런 식으로 어쨌든 시험에서는 마스터 슬레이브라고 나올 거예요.
10:30
작업을 분리하고 배포하는 마스터와 요청한 작업을 마스터가 요청한 작업이죠. 처리하는 다수의 슬레이브로 구성되는 패턴이다. 그러니까 슬레이브가 요청을 하는 게 아니에요. 마스터가 배정을 해주는 거예요. 작업을 그러면 슬레이브는 작업을 하고 결과를 되돌려줍니다. 느낌이 다르죠 이쪽에 서버 같은 경우에는 서버가 요청한 걸 보내주는 형태였어요. 정반대죠 이렇게 작업이 진행된다. 이렇게 보시면 되겠습니다. 이번에는 파이프 필터 패턴이에요. 정수기 필터 생각하시면 딱 그겁니다. 서브 시스템에 입력된 데이터를 처리한 결과를 파이프를 통해서 다음 서브 시스템으로 전달하는 과정으로 구성되는 패턴이다. 데이터흐름을 생성하고 처리하는 시스템에서 버퍼링이나 동기화 목적으로 사용한다. 데이터 소스가 있죠.
11:28
데이터 싱크 이 싱크는 데이터가 모이는 곳 싱크대 할 때 그 싱크예요. 자 그래서 소스가 여기 원본 데이터가 요 파이프를 타고 이 필터를 거치면 처리가 되겠죠. 이 처리된 데이터가 다시 파이프를 타고 이 필터를 거치면 또 처리가 될 거예요. 그 처리된 데이터가 파이프를 타고 최종 목적지에 도착을 하는 이런 형태라고 보면 되겠습니다. 자 이 정도 다음으로, 브로커 브로커는 다수의 서버와 다수의 클라이언트 사이에서 브로커를 두고 이게 중개자를 둔다는 뜻이에요. 클라이언트 요청을 브로커가 판단해서 아 이거는 이쪽 서버로 가면 좋겠다 이거는 저쪽 서버로 가면 좋겠다. 이렇게 알아서 연결을 해주는 거예요. 원격 서비스 실행을 통해서 상호작용을 한다. 통신을 조종하는 역할을 한다라고 되어 있죠.
12:19
클라이언트가 어떤 요청을 요렇게 오면 브로커가 이 요청은 3번 서버로 연결하는 게 제일 적절하겠네 이 요청은 1번이 적절하겠네 이런 식으로 그때그때 연결을 해준다. 이렇게 생각을 하시면 돼요. 중간에 브로커가 있다는 개념 넘어가서 피어 투피어 피어 투피어는 각 컴포넌트가 컴포넌트가 모듈이 될 수도 있고 노드가 될 수도 있어요. 그냥 어떤 시스템과 시스템 사이트와 사이트 이렇게 생각하시면 됩니다. 서버와 클라이언트 역할을 바꾸어가며 서비스를 할 수가 있다. 내가 서버가 될 수도 있고 내가 다시 클라이언트로 바뀔 수도 있는 거예요. 파일 공유할 때 주고받고 하잖아요. 줄 때는 서버고 받을 때는 클라이언트죠 이런 식으로 이제 할 수 있는 패턴이다. 이렇게 보시면 되겠습니다. 자 다음으로는 이벤트 버스 패턴이에요. 데이터와 처리 결과를 특정 채널에 전달하고 이 채널을 구독하고 있는 리스너는 전달된 메시지에 대해 알림을 수신하는 패턴이라고 되어 있습니다.
13:16
여러 가지 요소가 있다고 되어 있는데, 아래쪽에 이미지가 있어요. 다음 페이지에 자 이걸로 한번 보죠. 자 여기 이벤트 리스너라고 되어 있는데, 쉽게 우리가 표현하면 핸드폰 생각하면 돼요. 이 핸드폰은 지금 현재 이 채널을 구독하고 있는 거예요. 그다음에 요 아래 핸드폰 두 개는 이 아래쪽에 채널을 구독하고 있다고 생각을 해보면 되겠습니다. 자 그러면 이 콘텐츠 제공자가 요 이벤트 소스를 요 채널에 요 채널에 각각 하나씩 이렇게 보내줘요 자 그러면 각각의 채널은 내 채널에 구독자들한테 해당 메시지를 쏴주는 겁니다.
14:02
우리가 유튜브 같은 거 봤을 때 내가 구독하고 있는 유튜버나 스트리머들의 방송이 업로드가 되면 또는 스트리밍이 시작되면 구독한 팔로우한 사람들한테만 알림이 가죠 그게 이거예요. 그렇게 어려운 개념은 아닐 겁니다. 요즘 사람들한텐 이번에는 mvc 패턴 각각 mvc가 어떤 약자인지는 나와 있고요. 시각화 요소 데이터 상호작용하는 애들을 서로 분리해서 업무 로직의 영향을 서로 최소화시키는 패턴이라고 되어 있습니다. 웹 어플리케이션 등에 활용이 되고요. 방금 이야기했던 부분이고요. 각각이 뭘 하고 있는 건지 설명이 되어 있습니다. 자 모델이 데이터 처리를 담당하고요. 뷰는 시각화 ui죠 그다음에 컨트롤러는 이 모델과 로직의 상호작용을 담당을 한다. 이 부분이 이미지로 나와 있습니다.
15:01
개념이 어려운 개념은 아니고 화살표라든지 잘 따라가 보시면 그렇게 어렵지 않죠 자 유저가 기능 ui를 조작을 합니다. 그럼 컨트롤러가 그거를 반응을 하고 정보를 일단은 모델에 요청을 해요. 그럼 얘가 정보를 반환을 하겠죠. 요청된 그 정보를 전달을 합니다. 다시 b에 그러면 그 정보가 사용자한테 눈에 보이는 거죠. 절대적인 건 아니고요. 이런 형태로 대략 돌아간다 이렇게 이해를 해주시면, 되겠습니다. 다음으로는 블랙보드 패턴이에요. 비결정성 알고리즘이라고 되어 있습니다. 결과가 정해져 있지 않은 해결 전략을 구현하는 패턴이다라고 되어 있어요. 이거는 쉽게 말하면 내비게이션 생각하시면 됩니다. 내비게이션은 a에서 b로 가는데 무조건 경로가 딱 정해져 있지 않아요. 그때그때 상황에 따라 달라지죠 요런 것들을 비결정성 알고리즘이라고 표현을 해요.
15:59
기존 지식들과 패턴 매칭을 통해서 데이터를 검색한다. 자 요 세 가지로 구성이 된다라고 써 있고 이 세 가지도 읽어보시면 좋구요. 자 아래쪽에 차량 인식 음성 인식 신호 해석 등에 사용된다라고 되어 있습니다. 우리가 주차장에 이렇게 차가 지나가면 번호판을 인식해서 뭐 예를 들어서 그 주민인지 또는 방문객인지 판단을 하는 것도 마찬가지 이겁니다. 이미지가 약간씩 다르잖아요. 뭐 예를 들어서 날씨라던지 그다음에 시간대에 따라서 받아들이는 색깔도 다르기 때문에 번호판이 무조건 이렇게 생겼다라는 걸 알 수가 없죠 그런데도 번호판을 보면 모든 번호판을 다 숫자로 인식할 수 있잖아요. 그런 부분들이 요 블랙보드 패턴을 사용했다. 이렇게 생각을 하시면 되겠습니다. 자 마지막으로, 인터프리터 패턴이 있네요. 인터프리터 패턴은 언어나 명령어 이런 걸로 작성된 프로그램이 해석을 할 수 있게끔 이 명령어를 해석할 수 있게끔 적용되는 패턴이에요.
16:59
그래서 특정 언어로 작성된 표현식 이런 것들을 이제 해석해서 아 이거는 이런 기능을 수행해야 돼 라고 인제 방법을 결정할 수 있는 이런 형태라고 보시면 되겠습니다. 우리가 앞으로 배울 에스큐엘 같은 거에 적용되는 패턴이에요. 자 그래서 특정 기능에 이러이러한 패턴을 적용해서 설계에 들어간다 이렇게 생각을 해보시면 되겠죠. 다음으로는 미들웨어 솔루션입니다. 미들웨어의 종류 이렇게 보시면 돼요. 되게 많은데 마찬가지 문제에 종종 나오기 때문에 보실 필요가 있어요. 그렇게 어렵지 않습니다. dbms 데이터베이스 매니지먼트 시스템 데이터베이스를 관리하는 시스템이죠. 어려운 개념 아니죠. 데이터베이스와 연결을 하는 형태고요. 그다음에 rpc 리모트 프로시저 콜이라고 되어 있어요. 리모트는 원격 멀리 떨어져 있는 그 개념이죠.
17:52
다른 위치 원격에서 동작하는 프로시저를 직접 그 원격지로 가지 않고 내 방에서 호출을 할 수 있다. 라는 게 rpc입니다. 리모컨이랑 똑같은 개념 자 그렇게 보시면 되고 세 번째 mom은 여기 앞에 메시지 써있죠. 메시지 기반의 비동기형 메시지 전달 하는 미들웨어다 서로 다른 기종의 시스템 데이터 동기화를 위해서 사용된다. 이렇게 보시면 될 것 같고, 그다음에 tp 모니터는 트랜잭션 프로세싱이라고 되어 있죠. 트랜잭션 온라인 트랜잭션 업무를 처리하고 감시하고 제어하는 이제 미들웨어다라고 되어 있습니다. 이 온라인 트랜잭션이 이제 은행 예매 예약 이런 것들인데 사용자가 많이 증가를 해도 응답 속도가 빠르게 유지되어야 하는 이런 업무들에 사용이 되는 아이다. 이렇게 보시면 될 것 같구요. 그 다음에 아래쪽에 orb라고 되어 있죠.
18:52
자 orb의 5는 오브젝트 자 객체 지향 미들웨어래요. 그다음에 코바 코르바라고도 하고 표준 규격을 구현을 했다. 요 정도 알고 있으면 될 것 같습니다. 이 코바가 뭔지는 설명을 해놨는데 여기에 문제에 출제가 되지는 않는 것 같아요. 어쨌든 요런 개념이 있다. 그다음에 객체적인 미디어웨어는 어느 위치든 누가 만들었든 상호 간 통신을 보장하는 특성을 가지고 있다. 이렇게 보고 있으면 되겠습니다. 그다음에 마지막으로, 하나 더 있어요. was라고 해서 웹 어플리케이션 서버 나와 있습니다. 이것도 좀 중요한 개념인데요. http 세션 처리를 위한 그냥 웹 환경을 구현한다고 생각하시면 돼요. 미들웨어다 데이터 인세스 여러 가지 연동하여 활용이 된다 라고 되어 있습니다. was가 요즘에 좀 많이 뜨는 부분이죠. 그래서 이부분을 조금 더 자세하게 다루고 문제에도 꽤 많이 나오는 부분이에요.
19:48
우리가 흔히 웹 서버라는 애를 알고 있는데, 웹 어플리케이션 서버가 두 가지가 약간 다르거든요. 요거를 좀 정리를 해놨습니다. 웹 서버는 웹 브라우저의 요청을 통해서 우리가 흔히 아는 크롬이나 인터넷 익스플로러 네이버 웨일 이런 브라우저를 통해서 html이나 자바스크립트 이미지 이런 영상 이런 정적인 콘텐츠를 제공받는 거 이게 웹 서머가 하는 일이에요. 영상을 움직이지 않나요? 라는 개념이 아니라 이 데이터가 바뀌냐 안 바뀌냐의 문제인 거예요. 예를 들어서 회사 홈페이지라고 치면 회사 홈페이지의 로고 회사 홈페이지의 내용 이런 것들 이런 것들이 계속 주기적으로 바뀌는 데이터인지를 물어보는 거죠. 바뀌지 않는 데이터기 때문에 이걸 정적인 콘텐츠라고 이야기를 하는 겁니다. 그러면 이제 웹 애플리케이션 서버 was는 뭐하는 거냐 연동을 통해서 동적인 콘텐츠를 제공한다고 되어 있죠.
20:45
그래서 웹 서버는 정적인 웹 어플리케이션 서버는 동적인 콘텐츠를 제공한다. 이렇게 구분을 하면 됩니다. 아래쪽에 예시가 나와 있는데, 무조건 이렇게 되어 있는 건 아니지만, 이해를 돕기 위해서 예시를 제가 좀 그려놨어요. 예를 들어서 사용자 요청 웹브라우저에서 어떤 사이트에 접속을 했는데 그 사이트에 접속을 하니까 이제 요청을 하겠죠. 이 사이트를 보여주기 위해서 이런 이미지 이런 코드 이런 파일을 전달해 주세요. 라고 요청을 하겠죠. 그래서 이 5가지를 요청을 한 거예요. 자 그래서 웹 서버에서 이미지 html 자바스크립트 코드 그다음에 파일 이런 것들은 다 저장이 되어 있고 변동되는 부분이 아니기 때문에 바로 보내줄 수 있어요. 자 그런데 현재 날씨는 매번 바뀌겠죠. 그렇기 때문에 얘는 정적 데이터라고 할 수가 없는 거예요. 그래서 얘를 was로 보냅니다. 현재 날씨 정보를 알려주세요.
21:43
해서 그럼 얘는 이 동적 데이터베이스에서 현재 데이터 날씨를 받아온 다음에 다시 넘겨주고 최종적으로 그 데이터가 일로 가는 거예요. 자 이렇게 하게 되면 어쨌든 사용자 요청을 한 데이터가 다 안전하게 도착을 하는 거죠. 자 이런 식으로 접근을 한다고 보시면 됩니다. 그러면 현재 날씨를 이 웹 서버에서 계속 구하면 되지 않나요라고 생각할 수 있지만 그렇게 되면 서버에 과부하가 걸릴 수 있어요. 계속 그 날씨를 날씨 정보를 업데이트하는 그 로직이 계속 돌아가고 있어야 되기 때문에 그 부담을 was한테 넘겨준 거다 이렇게 생각을 하시면 되겠습니다. 어쨌든 동적과 정적을 구분할 수 있으시면 되겠다. 그 정도 보면 되겠네요. 다음으로는 연동 오류 코드의 오류 발생 형태 코드 앞에서 배웠죠 그런 코드가 이제 오류가 날 경우 잘못 입력했을 경우 이렇게 보시면 됩니다. 종류가 좀 있어요. 일단은 생략은 말 그대로 한 자리가 생략된 경우 누락된 경우에요.
22:42
h까지 써야 되는데 h를 안 썼을 경우 또는 a를 안 썼을 경우 이런 경우죠 그다음에 필사 오류는 잘못 입력된 거 2인데 4로 입력됐죠 이 부분이죠. 그다음에 전위 오류는 말 그대로 좌우 자리가 바뀐 경우에요. eh인데 h로 바뀌었죠. 이런 경우고 이중천위는 말 그대로 둘 이상 발생한 경우가 되겠죠. 자 추가 오류는 말 그대로 추가된 경우 어려운 개념 아니죠. 임의 오류는 여러 오류가 둘 이상 결합해서 발생한 경우 이런 경우에 오류가 있다. 이렇게 보시면 되겠습니다. 이건 코드 오류고요. 아래쪽에 오류 대응 방안은 코드 오류가 아닙니다. 자 시스템이 오류가 났을 때 대응할 수 있는 방안을 얘기하는 겁니다. 첫 번째로, 이중화되어 있죠. 이중화 앞에서 제가 간단하게 이거는 백업이라고 보시면 돼요. 라고 했죠. 백업보단 조금 더 복잡한 개념이에요. 그런데 어쨌든 같은 백업 시스템이 있다. 이렇게 생각을 하시면 됩니다.
23:41
장애가 발생해도 정상적인 서비스를 제공하기 위해서 직원이 2명 있다고 생각하시면 돼요. a라는 직원이 있고 b라는 직원이 있는데, a라는 직원이 아빠도 b라는 직원이 남아있으면은 계속 그 가게는 운영될 수 있겠죠. 자 요게 이중화예요. 2명이잖아요. 자 그래서 이중화 기술은 가용성을 극대화시킨다고 되어 있어요. 가용성 내가 지금 현재 필요하면 쓸 수 있는 특성 이게 가용성이죠. 자 액티브와 액티브 그다음에 액티브와 스탠바이 방식이 있는데, 액티브 액티브는 말 그대로 ab가 둘 다 액티브한 상태라는 뜻이에요. 둘 다 말 그대로 운용을 하고 있는 거죠. 일을 하고 있는 거구요. 액티브 스탠바이는 한 명은 액티브고 한 명은 쉬고 있는 거예요. 그러다가 a에 문제가 생기면 b가 바로 뛰어나오는 거죠. 자 이렇게 장애가 발생하는 경우에 다른 시스템의 서비스를 제공한다. 이거를 이중화라고 한다. 라는 겁니다. 그다음에 재해복구시스템이라고 있습니다.
24:37
문제가 생겼을 때 계속 뭐 대체 시스템이 작업을 하는 것도 물론 나쁘지 않지만 복구가 돼야 될 거 아니에요. 원활한 재외복구 수행을 지원하기 위해 이제 만들어진 시스템이다. 업무의 연속성 유지를 위한 체계다 가용성 뭐 비슷한 개념입니다. 재해 발생 시 준비되는 시스템이 아니라 평상시에 확보를 당연히 해둬야 되겠고요. 복구 수준에 따라서 여러 가지로 나뉜다 라고 되어 있는데, 네 가지 있습니다. 자 미러 사이트는 동일한 수준의 시스템 을 복구 센터에 구축한 거예요. 밀어내는 거 말 그대로 거울이니까. 복사가 된 정도로 그래서 바로 볼 수 있게끔 그다음에 핫 사이트는 동일한 수준의 시스템을 복구 센터에 구축해서 대기 상태 얘는 동시에 서비스를 하고 있는 거고, 대기 상태 그러니까 위쪽이 이중화로 따진다고 하면 얘는 액티브 액티브고 얘는 액티브 스탠바이라고 볼 수가 있겠죠.
25:34
이렇게 보시면 되고 그다음에 웜 사이트는 중요성이 높은 자원만 센터에 보관하는 거예요. 그래서 중요하지 않은 자원은 소실되겠죠. 그다음에 콜드 사이트는 최소한의 자원만 복구 센터에 확보를 해 놓은 상태가 있는 거예요. 그니까 비용에 문제가 있는 거겠죠. 요런 것들이 있다라는 거고, 요 4가지의 차이점이 이제 설명도 설명이지만 아래쪽에 복구 목표 시간 요거에 차이가 있습니다. 복구 목표 시간을 보면 복구를 위해서 허용되는 최대 허용 중단 시간이라고 되어 있어요. 말이 좀 어려운데 그러니까 이제 많은 비용을 들여서 원본에 가까운 복구 시스템을 가지고 있을 경우엔 중단되는 시간이 거의 없겠죠. 하지만 콜드 사이트 같은 최소한의 자원만 분배를 한 경우에는 다시 원상태로 복구하기 시간이 조금 더 많이 걸릴 거예요. 그게 인제 요 rto입니다.
26:33
자 그다음에 복구 목표 시점은 시간이 아니라 데이터량을 기준으로 보는 겁니다. 데이터 손실량이라는 거는 단순한 양의 문제가 아니라 현재 내가 복원할 수 있는 데이터가 어느 정도 선까지 있고 그다음에 다시 100%로 복원을 하기 위해서 어느 정도 양을 채워야 되는지 이 양에 대한 기준이에요. 보통 우리가 rto로 판단을 하죠. 미러 사이트는 비용은 높지만, 바로 올릴 수가 있어요. 즉시 하 사이트는 비용 마찬가지 높지만, 몇 시간이면 바로 복구를 해서 운용을 할 수가 있죠. 그다음에 웜사이트랑 콜드 사이트는 비용은 낮아요. 하지만 이 복구 가능 시간이 확 늘어나죠. 이렇게 보시면 됩니다. 외우는 게 뭐가 편할까요?
27:23
이 보면은 예를 들어서 이 기계라는 거는 예열 같은 게 필요하다 라는 느낌으로 접근을 해 본다면 콜드는 너무 차가워서 예열하는 데 시간이 제일 오래 걸리고 멈은 그래도 예열하는데 금방 시간이 전기가 되고 그다음에 핫은 이미 예열이 되어 있다. 뭐 이렇게 생각을 하시면 외우는 데 크게 무리는 없을 것 같아요. 마지막으로, 업무 영향 분석이라고 되어 있어요. 어려운 개념은 아니죠. 이 설명을 보고 요거를 이제 선택할 수 있으면 될 정도면 되겠습니다. 서비스의 장애 발생 시 손실 비용을 분석한다. 장애가 발생할 경우에 이 정도의 손실이 날 거다라고 영향 분석을 하는 거죠. 자 그래서 우선순위를 부여하고 주요 서비스별 최대 극복 가능 시간 이런 것들이죠. 가능 시간을 선정하고 결정해서 아 요런 요런 정도의 영향을 받을 수 있다. 이런 것들을 판단하는 것들을 업무 영향 분석이라고 한다라고 보면 되겠습니다.
'이기적영진닷컴 정보처리기사 필기강의 > 소프트웨어 설계' 카테고리의 다른 글
[정보처리기사 올인원] 1-5-1.인터페이스 설계 (0) | 2025.06.25 |
---|---|
[정보처리기사 올인원] 1-4-1.공통 모듈 설계 (0) | 2025.06.25 |
[정보처리기사 올인원] 1-3-2.UI 설계 (0) | 2025.06.25 |
[정보처리기사 올인원] 1-3-1.UI 요구사항 (0) | 2025.06.25 |
[정보처리기사 올인원] 1-2-3.UML (0) | 2025.06.25 |