| [[컴퓨터공학|'''컴퓨터 과학 및 공학 {{{#!wiki style="font-family: Times New Roman, serif; display: inline;"]] | ||
| {{{#!wiki style="margin: 0 -10px -5px; min-height:calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px" | <bgcolor=#1282d7,#1282d7> 기반 학문 | 수학(해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학(환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학(음운론 · 형태론 · 통사론 · 의미론 · 화용론) · 인지과학 |
| 하드웨어 | SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품 | |
| 기술 | 기계어 · 어셈블리어 · 바이오스 · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 함수형 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · LinuxBoot · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속 | |
| 연구 및 기타 | 논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영체제(멀티태스킹 · 프로세스 스케줄링 · 데드락 · 식사하는 철학자 문제 · 뮤텍스 · 세마포어 · 인터럽트) · 데이터베이스 · 컴퓨터 언어 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 어휘 분석 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 마크업 언어 · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크(네트워크 포트) · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식) · 버전 (버전 관리 시스템) · 난수생성 · 놀람 최소화 원칙 · 프레임워크 · 라이브러리 · 모듈 · API · ABI · 이진 탐색 |
| SWEBOK(소프트웨어 공학 지식 체계) | ||
| {{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px); word-break: keep-all" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin:-5px -1px -11px" | <colbgcolor=#009000><colcolor=#fff> 개발 생애주기 | 소프트웨어 요구사항 · 소프트웨어 아키텍처 · 소프트웨어 설계 · 소프트웨어 구현 · 소프트웨어 테스트 · 소프트웨어 운영 · 소프트웨어 유지보수 |
| 지원·관리 | 소프트웨어 형상 관리 · 소프트웨어 공학 관리 · 소프트웨어 공학 프로세스 · 소프트웨어 공학 모델 및 기법 · 소프트웨어 품질 · 소프트웨어 보안 | |
| 전문성·경제성 | 소프트웨어 공학 전문 실무 · 소프트웨어 공학 경제성 | |
| 기초 | 컴퓨팅 기초 · 수학적 기초 · 공학적 기초 |
1. 개요
서비스 지향 아키텍처 (SOA)의 하위 집합으로, 작고 독립적인 서비스들을 조합하여 애플리케이션을 구성하는 아키텍처 스타일.각 서비스는 특정 업무를 수행하며, 특정 프로토콜(예: HTTP)을 사용하여 통신한다. 이러한 서비스들은 각각 자체적인 데이터베이스와 배포를 가지며, 서로 다른 프로그래밍 언어, 프레임워크, 데이터베이스 등을 사용할 수 있다.
2. 장점
- 확장성 : 필요한 서비스만 확장할 수 있으므로, 전체 시스템의 확장성이 높아집니다.
- 유연성 : 각 서비스는 서로 분리되어 있으므로, 기존 서비스를 수정하지 않고 새로운 기능을 추가하거나 제거할 수 있습니다.
- 안정성 : 각 서비스는 독립적으로 배포되므로, 서비스의 장애가 전체 시스템에 영향을 끼치는 것을 방지할 수 있습니다.
- 기술적 다양성: 각 서비스는 다른 기술 스택을 사용할 수 있으므로, 최적의 기술을 선택할 수 있습니다.
3. 단점
- 복잡성: 각 서비스는 독립적으로 동작해야 하다보니 서비스 간 통신, 데이터 일관성, 보안 등에 대한 복잡한 문제 발생 방지가 필요하다.
- 테스트: 각 서비스는 독립적으로 동작해야 하다보니 통합 테스트 시 난이도가 증가한다.
- 운영 복잡성: 각 서비스는 독립적으로 배포되다보닌 운영의 복잡성이 증가한다.