목록CS/소프트웨어 공학 (9)
공부하는 스누피
서비스 검색 Service discovery 문제 client가 마이크로서비스와 인스턴스를 찾을 수 있어야 한다. 인스턴스의 동적 IP 주소는 인스턴스가 시작될때 할당받아서 HTTP 기반 API를 호출하기 어려워진다. 해결 => 사용 가능한 인스턴스와 서비스를 추적하는 새 컴포넌트(service discovery)를 추가한다. - 방법 1: 클라이언트 측 라우팅으로 클라이언트가 서비스 검색 서비스를 이용해 요청을 보낼 만한 인스턴스를 찾게 한다. - 방법 2: 서버 인프라에 리버스 프록시를 노출시켜 클라이언트를 대신해 적절한 인스턴스로 요청을 전달하게 한다. ex. 넷플릭스 유레카, 넷플릭스 리본, 쿠버네티스 kube-proxy, 쿠버네티스 서비스 리소스 에지 서버 Edge server 문제 공개된 마이..
마이크로서비스 마이크로서비스는 독자적인 업그레이드와 스케일링이 가능한 독립된 소프트웨어 컴포넌트이다. 일체형 애플리케이션과는 달리 마이크로서비스는 여러 개의 작은 서버에 배포할 수 있어 애플리케이션을 쉽게 확장하고 빠르게 개발할 수 있다. 마이크로서비스가 독립된 컴포넌트로 동작하려면 다음과 같은 기준을 충족해야 한다. - 아무것도 공유하지 않는 아키텍처를 유지해야 한다. (ex. 데이터베이스의 데이터 공유 x) - 동기 방식이나 명확한 API를 이용해서만 통신해야 한다. - 개별적인 런타임 프로세스로 배포해야 한다. - 마이크로서비스 인스턴스는 stateless하기 때문에 모든 인스턴스가 요청을 처리할 수 있다. 마이크로서비스 개발은 플랫폼의 각 기능을 독립적인 소프트웨어 컴포넌트로 개발하는 방식으로 이..
1. 네트워크는 안전하다. 2. 네트워크 지연은 0이다. 3. 대역폭은 무한하다. 4. 네트워크는 안전하다. 5. 토폴로지는 변하지 않는다. 6. 관리자는 1명이다. 7. 전송비용은 0이다. 8. 네트워크는 균일하다. - 피터 도이치, 1994 arnon.me/wp-content/uploads/Files/fallacies.pdf
현행 시스템 파악 절차 1) 구성/기능/인터페이스 파악 2) 아키텍처/소프트웨어 구성 파악 3) 하드웨어, 네트워크 구성 파악 소프트웨어 아키텍처 : 소프트웨어 구성요소와 그 특성/관계를 표현하는 시스템 구조 => 소프트웨어 설계 지침 소프트웨어 아키텍처 프레임워크 : 아키텍처 기술 표준 (구성요소) 아키텍처 명세서, stakeholder, 관심사, 관점, 뷰, 근거 소프트웨어 아키텍처 4+1 뷰 : 요구사항 시나리오를 4가지 관점에서 접근하는 방법. +1은 use case 뷰로 아키텍처 도출/설계를 담당한다. Use-case view: 아키텍처 도출/설계 담당 Logical view: 설계 모델 추상화, 기능적 요구사항. 클래스 다이어그램으로 표현. Process view: 런타임시 시스템의 task,..
시큐어코딩 가이드는 한국인터넷진흥원의 기술안내서 가이드로, 2020년 기준 한국인터넷진흥원에서는 JAVA, C, Android(JAVA) 가이드를 제공하고 있다. 정보처리기사에서는 인터페이스 개발 시 보안 취약점을 방지할 수 있는 JAVA 가이드라인으로 소개된다. 적용대상 보안약점 대응방안 입력데이터 검증 및 표현 입력값에 대한 검증 누락 입력 데이터에 대한 유효성 검증 체계 수립 보안 기능 보안 기능의 부적절한 구현 비밀번호 등 보안 정책이 적절하게 반영되도록 구현 시간 및 상태 병렬 시스템이나 멀티 프로세스 환경에서 시간/상태의 부적절한 관리 공유 자원의 접근 직렬화 에러 처리 에러 미처리 에러 상황 처리하도록 구현 코드 오류 개발자에 의한 코딩 오류 경고 순위의 최상향 조정 후 경고 메시지 코드 제..
SOA(Service Oriented Architecture) 대규모 컴퓨터 시스템을 구축할 때의 개념으로, 업무상의 일 처리에 해당하는 App 기능을 서비스로 판단하고, 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 나가는 방법론이다 (Wikipedia). 간단히 말하자면, 회사 업무 App이 채팅 앱, 회계 프로그램, 일정 관리 프로그램 등 여러 가지가 있다고 하자. 이때 모든 App들을 컴포넌트 단위로 서비스화한 다음, 표준 인터페이스를 통해서 하나의 커다란 업무 관리 App을 만드는 것이다. - 소프트웨어의 재사용성이 강조된다. - 비즈니스 환경의 변화에 빠르게 대응할 수 있다. - 각 서비스는 의존성이 최소화(Loosely Coupled)되어 있어야 한다. - 아키텍처 모델에는 시스템 ..
1. 운영체제 - 시스템 자원 관리 & 환경 제공 (유틸리티와 하드웨어 사이에 위치) - 목적 처리능력 Throughput : 일의 양 반환시간 Turn Around Time: 응답시간 사용가능도 Availability: 즉시 사용할 수 있게 신뢰도 Reliability: 정확성 - Window : Single User, Multi Tasking(Multi Programming) - UNIX: Multi User, Multi Tasking(Multi Programming) 2. UNIX - 시분할 시스템, Open System - 커널 Kernel: 프로그램과 하드웨어 간 인터페이스 - 쉘 Shell: 명령어 해석기, 파이프라인 가능하게 함 - Utility Program: 응용 프로그램(컴파일러,,,)..
1. 디자인 패턴 : 모듈의 세분화된 역할이나 세부적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결 방식. =>기본형 코드들이 포함되어 있음. => 패턴에 변형을 가하면 유사한 형태의 다른 패턴으로 변화됨. => 생성, 구조, 행위 패턴으로 분류할 수 있다. * 아키텍처 패턴과 차이점 아키텍처 패턴은 디자인 패턴보다 상위 수준의 설계에 사용되며, 전체 시스템의 구조를 설계하기 위한 참조 모델이다. 반면 디자인 패턴은 시스템의 컴포넌트들과 관계를 설계하기 위한 참조 모델이고, 몇몇 디자인 패턴은 아키텍처 패턴을 구현하는데 사용된다. 2. 생성 패턴 Creational Pattern : 객체의 생성과 관련된 패턴 => 유연성 향상시킴 - 종류 a. 추상 팩토리 Abstract Factory 인터페이..