정보처리기사

[정보처리기사] SW 개발 동향

hminor 2023. 7. 1. 19:32

S/W 개발 동향

  • 중앙 집중식 인프라, 클라우드 서비스
    • 개념
      • 인터넷 기반의 컴퓨팅
      • 타사 제공업체가 호스팅하여 인터넷을 통해 사용자에게 제공하는 인프로, 플랫폼 또는 소프트웨어
    • 장점
      • 서버를 직접 구매할 때 고려해야 할 전력, 위치, 확장성을 고려할 필요가 없다.
      • 데이터센터 어딘가에 이미 준비 되어있는 서버를 사용.
      • 서버 셋팅 등을 신경 쓰지 않고 서비스 운영에만 집중 가능하다.
    • 서비스 제공 형태
      1. 퍼블릭 클라우드(공공 클라우드, 개방형 클라우드)
        • 인터넷에 접속 가능한 모든 사용자를 위한 클라우드 서비스 모델
        • 클라우드 서비스 제공자(CSP)가 하드웨어, 소프트웨어를 관리한다.
      2. 프라이빗 클라우드(사설 클라우드, 폐쇄 클라우드)
        • 제한된 네트워크상에서 특정 기업이나 특정 사용자만을 대상으로 하는 클라우드
        • 서비스의 자원과 데이터는 기업 내부에 저장
      3. 하이브리드 클라우드
        • 퍼블릭 + 프라이빗 클라우드 (병행하여 사용)
        • 클라우드(가상서버)와 온프레미스(물리서버, 회사 자체 서버)를 결합한 형태
    • 서비스 유형
      • IaaS: 클라우드로 IT 인프라 자원을 제공하는 서비스, 서버 임대
      • Paas: 사용자가 소프트웨어를 개발할 수 있는 클라우드 컴퓨팅 플랫폼(환경 제공)
      • Saas: 사용자가 필요로 하는 소프트웨어를 인터넷상에서 이용하는 클라우드 서비스 (포토샵, 엑셀 등등)
      • BaaS: 블록체인 기술 응용 서비스 개발과 관리를 클라우드 기반으로 더욱 편리하게 지원하는 서비스
      • SecaaS: 클라우드 시스템의 여러 종류의 모델을 기반으로 삼아 보안 서비스를 제공하는 서비스
      • DaaS: 인터넷만 연결되면, 기업 내부망에 접속할 수 있는 클라우드 서비스 (가상의 컴퓨터로 회사 내부 장비처럼 사용)
      • FaaS: 애플리케이션의 기능을 서비스 형태로 등록해 특정 이벤트가 발생될 경우 실행되고 작업이 완료되면 종료하는 개념
    • 도커(Docker)
      • 컨테이너 응용프로그램의 배포를 자동화하는 오픈소스 엔진
      • 소프트웨어 컨테이너 안에 응용 프로그램들을 배치시키는 일을 자동화해주는 오픈 소스 프로젝트
    • 하이퍼바이저(컴퓨팅 가상화 솔루션)
      • 하나의 호스트 컴퓨터상에서 동시에 다수의 운영체제를 구동시킬 수 있는 하드웨어와 운영체제 사이의 소프트웨어 가상화 플랫폼
  • 소프트웨어 정의 기술(SDx, SED, Software-Defined Everything)
    • 개념
      • 소프트웨어를 가지고 분류하고 정의한다로 이해하면 됨.
      • 네트워크, 스토리지, DB들을 관리
      • 다양한 소프트웨어 정의 관련 기술을 하나로 통칭
      • 컴퓨터, 통신망, 데이터 센터 등이 소프트웨어 정의 기술을 통해 가상화됨에 따라 지능화된 소프트웨어로 제어가 가능하고, 서비스로서 제공된다.
    • 종류
      • SDN(Software-Defined Networking): SW로 네트워크를 정의
      • SDS(Software-Defined Storage): SW로 스토리지 정의
      • SDC(Software-Defined Computing): SW 정의 컴퓨팅
      • SDDC(Software-Defined Data Center): SW 정의 데이터 센터
        • 데이터 센터의 모든 인프라인 네트워크, 스토리지, 컴퓨터, 보안 등이 가상화되어 서비스로서 제공되는 차세대 핵심적인 데이터센터 솔루션
  • 양자컴퓨터(Quantum Computer)
    • 양자역학에서 양자 얽힘, 중첩. 텔레포테이션 등의 효과를 이용해 계산하는 컴퓨터
    • 양자 컴퓨터에서 자료의 양은 큐비트로 측정된다.
  • 인공지능(Artificial Intelligence)
    • 개념
      • 인간이 지닌 지적 능력의 일부 또는 전체, 혹은 그렇게 생각되는 능력을 인공적으로 구현
      • 인간의 학습능력, 추론능력, 지각능력을 인공적으로 구현하려는 컴퓨터과학의 분야
    • 기술
      • 머신러닝(기계 학습)
        • 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야
      • 인공 신경망
        • 인간의 뉴런 구조를 본떠 만드는 기계 학습 모델
      • 딥러닝
        • 머신러닝 알고리즘 중 인공 신경망을 기반으로 한 방법들을 통칭
        • 인공 신경망이라고도 하며, 텐서플로와 파이토치가 대표적인 라이브러리
    • 인공지능 키워드
      • 사이킷런: 구글 썸머 코드에서 처음 구현, 가장 널리 사용되는 머신러닝 패키지 중 하나
      • 텐서플로: 구글이 만든 딥러닝 라이브러리
      • 파이토치: 페이스북에서 개발
      • 케라스: 파이썬 기반의 오픈소스 신경망 라이브러리
  • 신속한 애플리케이션 개발
    • No Code
      • 코드를 사용하지 않고, 애플리케이션 개발
    • Low Code
      • 필요한 부품을 간단한 명령으로 조합하여 시스템을 만드는 개발 방법
  • 클라이언트 측 웹 프레임워크
    • React
      • 유저 인터페이스를 만드는데 사용되는 오픈 소스 자바스크립트 라이브러리
      • 페이스북에서 개발
      • SPA(React) 또는 모바일 애플리케이션 개발(React-Native)에 사용될 수 있다.
    • VueJS
      • 자바스크립트로 개발된 컴포넌트 구조 기반 프론트엔드 프레임워크
      • Evan You에 의해 개발
    • AngularJS
      • 자바스크립트 기반의 오픈 소스 프론트엔드 웹 애플리케이션 프레임워크
      • 구글에서 개발
    • Ajax(Asynchronous JavaScript ans XML)
      • 비동기적인 웹 애플리케이션의 제작을 위한 웹 개발 기법
  • REST(Representational State Transfer)
    • 개념
      • 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미.
      • ROA(Resource Oriented Architecture)의 개념으로 구현.
        • 자원 기반 아키텍처
    • 구성요소
      • 자원(Resource): HTTP URI, 어떤 주소
      • 자원에 대한 행위(Verb): HTTP Method, 어떤 메서드
      • 자원에 대한 행위의 표현(Representations): HTTP Message Pay Load, 어떤 데이터
    • REST API
      • REST의 원리를 따르는 API
    • RESTful
      • REST의 원리를 따르는 시스템
    • 전송데이터
      • JSON(JavaScript Object Notation): Key-Value로 이루어진 데이터
      • XML(eXtensible Markup Language)
        • W3C에서 여러 특수 목적의 마크업 언어를 만드는 용도에서 권장되는 다목적 마크업 언어
        • 데이터를 저장하고 전달할 목적으로 만들어졌다.
        • XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다.
        • 여기서 마크업 언어 종류
          • HTML
          • SGML
          • XML: 데이터 표현, 데이터 교환, 데이터 통합 등 다양한 분야에서 널리 사용됨
          • YAML: 직렬화 방식
        • 요즘은 JSON 형식으로 전송을 많이 하게 됨
    • SOA(Service Oriented Architecture)
      • 개념
        • 서비스 지향 아키텍처
      • 구성요소
        • Service Broker: 서비스 저장 및 관리를 담당하는 중재자
        • Service Provider: 서비스 제공자
        • Service Consumer: 서비스 제공자에 의해 제공되는 하나 이상의 서비스를 사용
      • 핵심 기술
        • XML(데이터 교환): 인터넷 데이터 교환기술
        • ESB(미들웨어): 메시징을 통한 다수의 시스템에 약한 결합 방식으로 연결하여 SOA를 구현하는 미들웨어
        • SOAP(서비스호출): XML 언어를 이용한 분산 환경에서의 정보교환을 위한 프로토콜, 실제 이용하는 프로토콜
          • 실제 SOAP과 통신하는 프로토콜의 종류
            • HTTP, SMTP 등
        • UDDI(서비스등록): 인터넷상에서 Web Service에 대한 정보 등록, 검색하는 공용
          Registry 서비스, 저장소
        • WSDL(서비스기록): Web Service의 기능, 사용법 등을 기술한 XML 기반의 언어, 설명서
    • 시멘틱 웹(Semantic Web)
      • 개념
        • 컴퓨터(구글)가 이해할 수 있는 방식으로 인터넷 웹사이트를 제작함으로써 인터넷에 존재하는 다양한 정보를 컴퓨터가 쉽게 이해하고 해석할 수 있도록 하는 것
        • 웹에 존재하는 수많은 웹 페이지들에 메타데이터를 부여하여, 웹 페이지를 의미와 관련성을 가지는 거대한 데이터베이스로 구축하고자 하는 것
        • 즉, 구글에서 쉽게 검색이 되어 더 많은 노출을 할 수 있도록 하는 것.
        • XML에 기반한 RDF(Resource Description Framework) 방식으로 코딩한다.
      • 구조
        • header: 제목
        • nav: 메뉴, 목차
        • aside: 사이드 메뉴 및 광고
        • section: article의 모음
          • article: 주요 내용, 본문
        • footer: 회사 정보
    • 온톨로지(Ontology)
      • 개념
        • 사람들이 세상에 대해 느끼고 생각하며 합의한 바를 컴퓨터에서 다룰 수 있는 형태로 표현한 모델
        • 인간과 프로그램이 함께 지식을 공유하는 데 도움을 주기 위함
        • 정보시스템의 대상이 되는 자원의 개념을 명확하게 정의하고, 상세하게 기술해 보다 정확한 정보를 찾을 수 있도록 하는 것
        • 시맨틱 웹을 구현할 수 있는 도구
        • RDF, OWL, SWRL 등의 언어를 통해 표현
      • 구성
        • 클래스
        • 인스턴스
        • 속성
        • 관계
      • 적용분야
        • 인공지능
        • 정보검색
        • 유비쿼터스 컴퓨팅
        • 전자상거래
    • 기타 용어 정리
      • 블록체인(Blockchain)
        • 분산 컴퓨팅 기술 기반의 데이터 위변조 방지 기술
        • 블록들을 형성된 후 시간의 흐름에 따라 순차적으로 연결된 체인의 구조를 가짐.
        • 공공 거래장부 또는 분산 거래장부라고도 한다.
      • 비트코인(Bitcoin)
        • 블록체인 기반 암호화폐
      • 매시업(Mashup)
        • 웹으로 제공하고 있는 정보와 서비스를 융합해 새로운 소프트웨어나 서비스, DB를 만드는 것
        • 기존의 자원을 활용해 만들기 때문에 서비스 구축을 위한 비용이 적게 든다.
      • 디지털 트윈(Digital Twin)
        • 물리적 자산, 시스템 또는 프로세스를 소프트웨어로 표현한 것
        • 건물과 같은 물리적 자산 또는 환경에 대한 디지털 방식의 재현
      • 메타버스(Metaverse)
        • 가상을 의미하는 Meta와 세계를 의미하는 Universe의 합성어
        • 가상세계 속에서 정치, 경제, 사회, 문화 활동을 할 수 있게 만드는 시스템
      • 코드 커터족(Code Cutters)
        • 기존의 TV 방송 서비스를 이용하지 않고 인터넷 등으로 방송을 보는 소비자
      • 핀테크(FinTech)
        • 금융(Finance)과 기술(Technology)의 합성어
        • 모바일, 빅데이터, SNS 등의 첨단 정보 기술을 기반으로 한 금융서비스 및 산업의 변화
      • 포스퀘어(Foursquare)
        • 위치 기반 소셜 네트워크 서비스
        • 자신의 휴대전화의 애플리케이션 또는 단문 메시지 서비스를 이용해 특정 장소에 체크인을 할 수 있다.
        • ex) 사진 촬영시 어디에서 찍었는지 정보를 확인할 수 있는 것.
      • 디지털 발자국(Digital Footprint)
        • 사용자가 온라인 활동을 하며 남긴 기록
      • 노모포비아(Nomophobia)
        • 노 모바일폰 포비아의 줄임말로 휴대폰이 없으면 불안감, 공포감을 느끼는 공포증
      • 소셜다이닝(Social Dining)
        • 소셜 미디어를 통해 관심사가 비슷한 사람들끼리 식사를 즐기는 것.
      • 디지털 포렌식(Digital Forensics)
        • 디지털 증거물을 분석해 수사에 활용하고 증거 능력을 향상시키기 위한 과학 수사.
        • 삭제된 데이터를 분석 및 복구해 수사에 활용하는 기법
        • 실제 삭제된 i-node 블록에서 찾는것이 아닌 data-node 블록에서 찾는 것.
      • 위치기반 SNS(LBSNS)
        • GPS를 통해 이용자가 있는 위치를 다른 이용자에게 알려주고 관련 정보를 공유할 수 있는 서비스
      • 디지털 프로슈머(Digital Prosumer)
        • 프로슈머는 공급자와 소비자의 합성어로 생산자이면서 곧 소비자라는 의미(유튜버)
        • 인터넷 커뮤니티에 참여해 컨텐츠를 즐기고 정보와 자료를 얻는 소비자이면서 동시에 의견을 제공하여 생산에도 영향을 미치는 사람
      • 크리슈머(Cresumer)
        • 크리에이티브와 컨슈머를 조합한 단어
        • 제품개발과 유통과정에 소비자가 직접 참여하는 프로슈머보다 발전한 개념
      • 인포러스트(Infolust)
        • 정보와 열광의 합성어로 정보열광자라고도 한다.(정보에 미친놈?)
        • 정보의 검색에 그치지 않고 그것을 본인의 블로그나 SNS 등에 게시하여 널리 퍼뜨리는 존재
      • 커넥티드 카(Connected car)
        • 인터넷에 연결할 수 있는 자동차
      • 웨버홀리즘(Webaholism)
        • 인터넷 중독증