INFRA study (3)

jw·2024년 1월 26일

공부

목록 보기
4/13
post-thumbnail

설계

비기능 요구사항을 정의한 시스템을 구현하려면 설계 단계를 거쳐야한다.


설계란 무엇인가?

요구사항 정의가 완료되면, 그 요구사항을 충족시키기 위해 어떻게 구성할지 구체적인 방법이나 방식을 검토하는 것. 설계란 결국 요구사항 구현의 연장선이다. 요구사항 구현 단계에서 상세화 하는 작업.

설계 목적은 개발자가 구현하고자 하는 시스템 동작 방식을 올바르게 이해하고, 이후 단계에서도 공통된 지침과 인식을 가짐으로써 방향을 그르치지 않고 본래 목표한 시스템을 구현하는 것.


기본 설계 & 상세 설계

기본 설계는 기획 및 계획 단계에서 정의한 요구사항 정의서를 바탕으로 검토하여 설계하며, 이후 단계에서 하는 상세 설계를 이어주는 역할을 한다. 즉, 어떤 시스템을 구현하는지 전체적으로 인식하고, 시스템 개요와 기본적인 것들을 고려하여 기본 개념을 놀리적으로 정의하는 단계라고 볼 수 있다.

기본 설계 단계를 제대로 거치지 않으면, 이후 상세 설계 단계에도 영향을 미친다.(재작업으로 인한 일정 지연 등) 그렇기 때문에, 상세 설계 단계에서 설계가 가능한 수준까지 상세화하는 것이 중요하다.

상세 설계는 기본 설계에서 결정한 정보를 바탕으로 시스템을 구현하는 데 필요한 정보를 상세화하는 단계이다. 서버와 관련한 OS나 미들웨어, 프로그램 사양,등 시스템 구축 담당자가 차질 없이 작업할 수 있는 수준까지 구체적으로 상세화한다.


설계 모델 - 2계층 시스템 & 3계층 시스템

2계층 시스템

요즘 업무 시스템은 주로 업무 프로그램을 설치한다거나 하지 않고, 웹을 통해 업무 처리 사이트에 접속해서 업무를 처리하는 것이 일반적이다.

하지만, 이전 업무 시스템은 PC 하나에 프로그램도 설치하고, 데이터도 로컬에 저장하는 1계층 구조가 많았다. 업무 시스템 뿐만 아니라, 대부분의 서비스들이 설치파일을 통해 이루어졌다.

이후, 네트워크 보급이 원활해지며 버스 좌석 예매 시스템처럼 클라이언트 단말기에 전용 프로그램을 설치하고, 데이터는 중앙에 저장하는 2계층 구조가 일반화되었다.

2계층 구조로 구성된 시스템은 여러 클라이언트가 동시에 업무를 처리할 수 있다는 장점이 있지만, 몇 가지 문제점이 있다.

  • 클라이언트 측에 업무 처리를 의존하기 쉬움 -> 클라이언트 측 업무 처리에 문제 발생하면, 전체 시스템 영향
  • 모든 클라이언트가 애플리케이션을 도입해야 함 -> 유지보수와 배포에 어려움을 초래할 수 있음
  • 기능이 추가됨에 따라 클라이언트에 더 많은 자원이 필요할 수 있다. -> 추가적인 비용과 시간 소모

3계층 시스템

클라우드 컴퓨팅과 웹 기술이 보급되며, 앞선 3가지 문제들을 해결하기 위해 3계층 시스템 방식을 채택했다. 3계층 시스템은 웹 서버에 HTML 같은 정적 콘텐츠를 배치하고, AP서버에는 프로그램을, DB서버에는 조건에 맞는 데이터를 저장하는 등 각 서버에 역할을 부여한다. (1,2,3 계층으로 갈수록 점점 분리가 일어나는 느낌. 더 안정적인 서비스 제공이 가능해졌다고 생각한다)

  • 3계층 아키텍쳐의 예시 이미지

웹 서버 - AP 서버(WAS) - DB 로 구성된 시스템을 예로, 3계층 시스템의 서순을 다뤄보면,

  1. 클라이언트는 웹 브라우저에서 웹 서버로 요청을 보낸다.
  2. 웹 서버는 수신한 요청을 AP서버에 전달하고 프로그램을 실행.
  3. AP서버에서 실행한 프로그램은 웹 서버의 요청을 처리하고 DB서버에서 데이터를 받아옴.
  4. AP서버는 DB서버에서 반환한 데이터를 웹 서버에 돌려줌.
  5. 웹 서버는 AP서버에서 받은 결과를 클라이언트의 웹 브라우저에 돌려줌.

다음과 같은 서순으로 작동한다.

1) 프레젠테이션 계층
웹 서버는 HTML, 이미지 파일 등의 정적 컨텐츠를 HTTP 프로토콜 응답으로 웹 브라우저로 보내는 역할을 담당한다. 한편, 웹서버는 애플리케이션 처리 요청도 웹브라우저에서 받는데, 이때는 컨텐츠를 직접 반환하지 않고 애플리케이션 계층을 이루는 AP서버에 처리를 위임한다. 아차피 같은 웹 서버 소프트웨어는 httpd라는 프로세스를 서버의 메모리상에서 실행하여 HTTP 요청에 대한 응답을 클라이언트에 반환한다.

2) 애플리케이션 계층
AP 서버는 웹 서버에서 요청을 받으면, 애플리케이션 서버라는 자바 프로세스를 사용하여 처리한다. 일반적으로 앱 서버는 DB서버에 질의하여 CRUD 처리를 한다. 처리 결과는 웹서버를 거쳐 클라이언트에 반환된다.

3) 데이터 계층
DB서버는 데이터 저장소로 대량의 데이터를 관리한다. DB 서버는 앱 계층에서 배치된 AP서버에서 요청을 받아 sql 쿼리를 실행하여 결과를 다시 반환한다.

웹 시스템은 외부 시스템과 데이터를 교환할 때 파일 연계 처리를 해야하는 시스템도 있다. 예로, ftp 기능을 이용하여 비동기 통신으로 데이터 전송 기능을 제공, 외부 시스템의 문서 데이터를 웹 시스템 측과 연계하도록 구현할 수 있다. 이처럼, 외부 시스템과 데이터를 교환할 때의 파일 연계 등은 항상 어떤 방식으로 구현하면 좋을지 고려하고, 검토해야한다.

3계층 시스템의 비기능 요구사항

  1. 서버 OR 미들웨어 등 장애 발생
    3계층 시스템에 연결하는 통신 경로나 서버 구성을 결정하고, 내결함성 요구사항을 충족하도록 웹 시스템의 서비스 정지 시간은 어디까지 단출할 수 있는지 등을 고려해야한다.

  2. 조회 시간 소요 증가
    웹을 조회할 때, 조회 결과를 보여주는데 시간이 오래 걸릴 수 있다. 게다가 사용자가 증가하면 정보를 처리하는 데 더 많은 시간이 소요되고, 업무 종료 시간까지 업무 처리를 끝내지 못하는 일도 발생할 수 있다. 업무에 영향이 없도록 유연하게 리소스를 확장하는 방법을 생각하여, 성능 및 확장성을 설계 시에 반영해야한다.

  3. 보안 - 정보 유출, 데이터 변조 및 파괴, 업무 서비스 중단...
    3계층 시스템을 오래 운영하다보면 해당 위험이 증가할 수 있다. 정보 유출, 웹페이지 변조, 제삼자 공격, 스푸핑 취약점 발견 등 여러 변수에 대한 시스템 안전을 어떻게 확보할지 생각하고, 명세하는 것이 보안 설계의 주요 목표라고 할 수 있다.!

profile
『Infra Engineering』

0개의 댓글