정보처리기사 필기 준비하며 정리한 내용입니다.
인터페이스 요구사항 확인
📌절차
요구사항 분류 → 분석 → 할당 → 협상 → 정형 분석(문서화)
- 인터페이스 = 접점을 만들어주는 것ex. 빕스에서 CJ ONE의 API를 호출=인터페이스 한다.이렇게 꼭 외부만이 아니라 내부에서 함수를 호출하는 것도 역시 인터페이스!
- 즉 시스템과 시스템이 서로 연결-호출하는 것.
- ex. 시스템과 나와의 접점을 만들어주는 것이 유저 인터페이스
- 인터페이스는 서로의 약속=규칙이 정해져있어야 한다.
- 상호 작용하는 접속 방법이나 규칙을 정의하는 것이 인터페이스 요구사항
1) 요구사항 분류
- 기능적 요구사항
- 어떤 액션을 했을 때 어떤 기능이 작동해야 한다. 입력, 처리과정, 출력
- 비기능적 요구사항
- 성능, 사용성, 안정성, 신뢰도, 보안 : 기능과는 관련이 없는 것들
- 성능
- 응답시간 : 응답을 할 때
- 반환 : 응답 후 처리까지 하고 갖다줬을 때
- 처리량은 많을 수록 좋다
- 가용성 : 언제든지 이용할 수 있어야 (고가용성 : 더더욱 그래야 한다!)
- 성능
- 성능, 사용성, 안정성, 신뢰도, 보안 : 기능과는 관련이 없는 것들
2) 요구기능 분석
- 분석할 땐 유스케이스 다이어그램, 데이터 흐름 모델, 상태 모델, UML 등 모델링 기법을 사용한다!
3) 요구사항 할당
4) 요구사항 협상
- 조율과정 (합의)
5) 정형 분석 - 인터페이스 요구사항 검증 방법 ⭐
요구사항 검토
- 동료검토
- 내 옆에있는 사람과 같이 검토 2~3명
- 따라서 짝 프로그래밍과 관련이 있다
- 개발에서도 쓰인다
- 내 옆에있는 사람과 같이 검토 2~3명
- 워크스루 Walk Through
- 비정형 검토회의
- 검토 자료를 사전에 배포 (팀 단위) → 사전 검토 → 이후 회의
- 비정형 검토회의
- 인스펙션 Inspection
- 전문가들이 발견해나가는 방법
- 명세서 작성자 제외
- 절차
- 계획 → 개관(시작하자!) → 준비 → 검토회의 → 재작업 → 추적(다른 문제 없나 추적하기)
- 전문가들이 발견해나가는 방법
정형 기술 검토회의 FTR Formal Technical Review
말 그대로 모여서 하는 회의
- 목적
- 산출물 - 요구사항 일치 여부 검토
- 잘 표현되었는지 확인
- 관리 용이하게 함
- 검토 지침 ⭐
- 제작자가 아닌 ‘제품’의 검토에만 집중
- 문제 영역 명확히 표현
- 쓸데없는 얘기 말고 문제에만 집중하자!
- 모든 문제를 바로 해결하는 게 아니다.
- 회의 끝나서 우선순위 정한다.
- 사전에 작성한 메모를 공유한다.
- 논쟁이나 반박을 제한한다.
- 의제 정하고 그 범위를 유지한다.
- 참가자의 수를 제한한다. 사전준비를 철저히 하도록 강요한다.
- 자원과 시간 일정을 할당한다. (딱 시간 정해서 그 시간동안)
- 모든 검토자에게 의미있는 교육을 행한다.
- 검토의 과정과 결과를 재검토한다.
2. 인터페이스 대상 식별
- 대상이란? : 인터페이스의 대상들을 뜻한다.
- 데이터 보내는 쪽을 송신서버/시스템
- 받는 쪽을 수신서버/시스템
- 중간에 데이터 받아서 보내주는 건 연계서버/시스템이라고 한다.
- 대상들이 서로 규약을 맞추기 나름이라, 꼭 이렇게 해야 한다는 표준이라는 건 없다.
📌시스템 아키텍처
개념
- 컴퓨터는 어떻게 구성되어있는가
시스템이 서비스를 제공하기 위한 기반. 전체적인 시스템 구성도
요 아래 항목(시스템의 구조, 행위)을 그림으로 그려놓은 것 (개념적 모형)
- L4장비가 로드를 밸런싱해준다 (접속하는 걸 분산해줌)
- 웹서버가 한대면 필요가 없지만 두대부터는 필요해진다!
- 웹서버1, 웹서버2 중 어디로 사용자를 접속하게 할지 정한다.
- 웹서버 1, 2
- 정적인 걸 보여준다
- 형태만 보여주는 것!
- WAS 1, 2
- 동적인 역할 수행
- 자바에서 많이 쓴다
- ID, PW 검사는 여기에서 한다!
- 파일 서버가 있을 수도 있다
- 예를 들어 WAS1기에 첨부파일을 올렸는데, 다른 사람이 WAS4로 접속했다면?
- 이 때 파일 서버로 마운트를 건다면 해결된다 (이미지, 파일 등) - 글자는 DB서버
- = 파일 서버를 참조하게 하는 것!
- 이 때 파일 서버로 마운트를 건다면 해결된다 (이미지, 파일 등) - 글자는 DB서버
- 예를 들어 WAS1기에 첨부파일을 올렸는데, 다른 사람이 WAS4로 접속했다면?
- 데이터베이스 서버
- ID, PW 데이터 등 정보는 여기에 있다. 이걸 웹브라우저에 보여준다.
- 기본 요구사항
- 시스템 구성 및 동작 원리를 나타내야
- 외부 환경과의 관계도 묘사
시스템 아키텍처 구성요소
- DNS Domain Name System
- 도메인 이름에 대한 질의(우리가 엔터를 치면 일단 DNS 서버에 가서 이 주소값이 뭐니? 하고 물어보는 과정) → 해당 도메인이 등록되어 있다면 도메인 이름에 해당하는 IP 주소를 응답해주는 것
- Web Server (Web server + WAS)
- 정적인 것을 담고 있다
- API Application Programming Interface
요청이 들어오면 약속한 방식에 맞춰 정제된 데이터로 응답한다
- Load Balancer (L4장비)(보통 한 컴퓨터는 500명정도 동시접속하면 서버 과부하)
- 분배 방식
- Random : 말그대로 랜덤
- Least loaded : 가장 적은 양의 작업 처리하는 서버한테 할당
- Round Robin : 순차적으로 돌아가면서 분배한다. (1→2→3→1→2 이런식)
- 분배 방식
- 여러대를 구성하게 된다. 사용자를 어디로 배치할지 분배하는 역할.
- CDN Content Delivery Network사용자와 물리적인 길이가 짧은 곳으로 (데이터 저장 서버는 한곳에만 있는 게 아니다!)
- 영상 등의 용량 큰 컨텐츠 데이터를 분산처리하는 것
- Database
데이터 저장해두는 공간
시스템 아키텍처 고려사항
- 확장성 Scalability : 용이하게!
- 성능 Perfomance : 빠르고 정확하게!
- 응답시간 Latency : 더욱 빨리!
- 처리량 Throughput : 더욱 많이!
- 접근성(=가용성) Availability : 언제든지!
- 고가용성 = HA 솔루션
- 일관성 Consistency : 일관된 결과를 돌려주어야 한다.
인터페이스 시스템의 구성
인터페이스 시스템 : 데이터를 주고받을 수 있게 하는 것
1) 송신 시스템
- 데이터를 보내는 시스템
2) 수신 시스템
- 데이터를 받는 것. 받는 쪽 데이터베이스에 반영하는 시스템
3) 연계 시스템 📌
- 송수신 시스템 사이에서(중간에서) 송수신하고, 현황을 모니터링하는 시스템
- 연계 시스템을 두는 이유
- 보안 강화, 다중 플랫폼 지원 등이 가능
- 다중 플랫폼이란?
- 예를 들어 A와 B가 운영체제체계가 달라서 통신이 안될 수 있다. 이 경우 통신이 가능하도록 하는 것
- 다중 플랫폼이란?
- 보안 강화, 다중 플랫폼 지원 등이 가능
- 연계 시스템 분류 체계와 식별 정보 (회사마다 다 다르다!)
- 시스템 분류 체계
- 회사마다 테이블이 존재한다! 그것에 맞추면 된다.
- 식별 정보
- 송수신 데이터 식별 ⭐
- 송수신 데이터 전문 구성
- 전문 공통부 : 전체적인 표준 항목 (ID, 서비스코드..)
- 전문 개별부 : 실제 데이터 포함
- 전문 종료부 : 끝을 표시하는 문자 포함 (서로 약속한!)
- 컴퓨터는 끝났다는 걸 꼭 알려줘야 한다!
- 송수신 데이터 전문 구성
- (서로 약속한!) 규격화된 표준 형식에 맞춰 전송
- 송수신 데이터 식별 ⭐
- 시스템 분류 체계
🔻연계방식
- 직접 연계방식
- 속도 빠르다
- 구현 단순
- 개발 비용, 기간이 짧다
- 결합도 높다
- 시스템 변경에 민감하다
- 각각의 상대에 맞는 암호화 체계를 만들어야 한다.
- 통합 환경 구축 어렵다
- 중간 매개체 없이 송수신 시스템이 직접 인터페이스 하는 방식
- 간접 연계방식
- EAI(기업 어플리케이션 통합)서버와 같은 연계서버를 활용하는 방식
- 중계시스템이 알아서 타 시스템과의 암호화를 처리해준다
- 다양한 환경 갖는 시스템들과 연계, 통합 관리 가능
- 인터페이스 변경에 유연한 대처 가능 (연계시스템에만 맞추면 되니까!)
- 개발하기엔 조금 복잡하다
- 좀 더 정형화된 데이터가 필요하기 때문에
- 개발 비용, 기간이 길다
- 개발하기엔 조금 복잡하다
- 중간에 연계 서버를 두는 방식 (중계시스템, 어댑터)
🔻연계 기술
어떻게 각각의 시스템을 연결할 것인가
- DB Link
- DB를 연결할 수 있는 객체를 뚫어주는 것
- DB Connection
- 위의 객체보다 큰 단위의 DB를 다 뚫어주는 것
- DB Connection Pool : A에서 B의 DB에 연결할 때, DB에 연결할 수 있는 여러 일꾼들. 일꾼이 왔다갔다하며 B의 DB를 가져오게 된다. DB 커넥션들이 묶여있는 Pool, 공간.
- DB를 연결한다!
- JDBC/ODBC
- 데이터베이스를 연결할 수 있는 편리한 기술
- JDBC : JAVA에서 DB를 조금 더 쉽게 연결하게 해준다
- ODBC : 윈도우에서 여러가지 커넥션 처리할 때 사용한다.
- 필요한 이유
- DB에서 데이터 가져오려면 접속을 해야 한다.
- BUT! DB 별로 연결하는 기술이 다 다르다.
- 이 연결을 도와주는 수단이 ODBC, JDBC
- 데이터베이스를 연결할 수 있는 편리한 기술
- API / OpenAPIOpenAPI : 공공에서 뚫어놓는 것이걸 REST라고 보면 된다
- 필요한 것
- API명
- 입출력 파라미터 정보 (뒤에 있는 파라미터!)
- 필요한 것
- 송신 시스템의 애플리케이션 프로그래밍 인터페이스 프로그램
- API : 만들어진 문서가 있다. 내가 입력한 입력값에 해당하는 결과값을 돌려줘!
- Web Service
- WSDL (Web Services Description Language)
- xml로 만들어진 설명서
- 내가 어떤 입력값을 줘야 어떤 출력값이 나오는지 정의한 것
- UDDI (Universal Description, Discovery and Integration)
- 도서관 같은 것
- 여러개의 WSDL을 가지고 있는 저장소 역할
- SOAP (Simple Object Access Protocol)
- 내가 UDDI에서 해당하는 WSDL를 찾은 다음, 실제로 통신하는 프로토클
- 위의 것들을 이용해서 데이터를 두고받는 것이 Web Service
- 그러나 얘네가 어려워서 만들게 된 것이 REST
- 위의 것들을 이용해서 데이터를 두고받는 것이 Web Service
- 내가 UDDI에서 해당하는 WSDL를 찾은 다음, 실제로 통신하는 프로토클
- Hyper Link
- 누르면 정보를 가져오는 거니까!
- Socket
- 서버에 포트를 뚫어서 클라이언트가 직접 연결하게 하는것
- 클라이언트가 직접 그 컴퓨터에 접속할 수 있도록 해주는것!
- 소켓방식이라고 한다
- 서버에 포트를 뚫어서 클라이언트가 직접 연결하게 하는것
- WSDL (Web Services Description Language)
🔻통신 유형
- 실시간 처리 (우리가 이용하는 대부분의 것들)
- 배치 처리 (한달에 한번씩, 일주일에 한번씩 돌아가는 것)
- ex. 급여, 전기요금, 통신요금 등
- 보통 [이름,ID,전화번호..] 중 2개를 접목하면 어떤 한사람을 특정할 수 있기에 하나를 제외한 나머지는 암호화해서 저장하게 된다.
- 비밀번호는 단방향 암호화
- 나머지는 양방향으로 암호화-복호화가 가능한 걸 쓴다
- 비밀번호는 단방향 암호화
- 법령이 정한 암호화 대상
- 주민번호, 비밀번호, 패스워드, 계좌번호, 공개에 동의하지 않은 개인정보
- 데이터 송수신 과정도 물론 암호화!
미들웨어 솔루션 ⭐
- 양쪽을 연결해서 데이터 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어. = 미들웨어!
종류 ⭐⭐⭐
- 원격 프로시저 호출 RPC (Remote Procedure Call)
- 외부에 있는 컴퓨터 자원 이용할 때.
- 중간에서 프로시저를 호출할 수 있게 도와준다.
- 프로시저란?
- 함수, 메서드, 프로시저
- 외부에 있는 컴퓨터 자원 이용할 때.
- 메시지 지향 미들웨어 **MOM (**Message Oriented Middleware)
- 지연 처리
- 저장하면서 ~ 비동기식 미들웨어
- X실시간X으로 처리되지 않아야 하는 것들
- 배치에 가깝다
- 지연 처리
- ORB (Object Request Broker)
- 객체지향 시스템에서 객체 및 서비스를 요청하고 전송할 수 있도록 지원하는 미들웨어
- DB 접속 미들웨어
- JDBC, ODBC
- TP 모니터 (Transaction Processing monitor)
- 트랜잭선 = 하나의 일처리 단위
- 이걸 모니터할 수 있는 것!
- 올바르게 처리되는지 감시 제어
- 이걸 모니터할 수 있는 것!
- 트랜잭선 = 하나의 일처리 단위
- 웹 어플리케이션 서버 WAS (Web Application Server)
- 웹 애플리케이션을 지원하는 미들웨어
- 웹 서버가 아니다!!
- 웹 애플리케이션을 지원하는 미들웨어
- 엔터프라이즈 서비스 버스 (Enterprise Service Bus)
- 선로(버스)를 이용해 주고받게 한다
- 기업 안팎의 모든 시스템 환경 연동
- 느슨한 결합 형태!
- = 약결합
- 장애 발생하더라도 이용 가능!
- 강결합은 반대다 - 모든 걸 이용 불가
- 장애 발생하더라도 이용 가능!
- = 약결합
- 선로(버스)를 이용해 주고받게 한다
인터페이스 구현
인터페이스 데이터 포맷
- JSON : key이름 - value값의 쌍
- XML : 확장된 마크업 언어
- CSV : 쉼표로 구분 comma
- YAML : 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식
내-외부 모듈 연계 방식
- EAI (Enterprise Application Integration)
- 구축 유형
- Point-to-Point
- 각 애플리케이션간 직접
- Hub & Spoke
- 허브 시스켐을 통해. 중앙집중적
- Message Bus = ESB(Enterprise Service Bus)
- 애플리케이션 사이 버스를 둔다
- 컴퓨터 기판의 금색선을 버스라고 한다
- 뛰어난 확장성 = 유연
- 애플리케이션 사이 버스를 둔다
- Hybrid
- Hub를 버스로 연결
- Point-to-Point
- 기업에서 운영되는 서로 다른 애플리케이션 통합
- 구축 유형
- ESB (Enterprise Service Bus)
- 웹서비스 중심으로 유연하게 확장 가능성 있게 통합하는 기술 (상단 미들웨어 항목 참조)
인터페이스 보안
소스, DB, 네트워크
- 패킷 공격 기법
- 스니핑 : 감청, 기밀성 훼손
- 스푸핑 : 탈취
- 시큐어 코딩
- OWASP 단체에서 발표한 Top10을 참고하여 KISA에서 보안 약점가이드를 발표 = 대응방안
- 데이터베이스 암호화
- 기밀성 유지 위해 암호화
- 알고리즘
- 대칭 키 알고리즘 : 암,복호화에 같은 키 사용
- 비대칭 키 알고리즘 : 공개키, 개인키가 존재
- 해시 알고리즘 : 단방향 ex.비밀번호
- 기법
- API 방식 : 개발단 = 애플리케이션 레벨에서ㅓ
- Plug-in방식 : DB솔루션 구매
- Hybrid : 위 둘 결합
- TDE : DBMS에 내장된 암호화 기능 이용
- 네트워크 구간 암호화
- IPSec = IP시큐리티
- SSL : HTTPS 통째로 암호화
- S-HTTP : ID 뒤에 항목만 암호화
인터페이스 구현 검증 도구
- xUnit : 다양한 언어 지원하는 단위 테스트
- STAF : 서비스 호출 및 컴포넌트 재사용
- FitNesse : 웹 기반 테스트케이스
- Selenium : 웹 어플리케이션
- watir : ruby 사용