1. 서버와 클라이언트
웹서버 : 정적 컨텐츠를 클라이언트에 전달
애플리케이션서버: 동적콘텐츠를 클라이언트에 전달
리버스 프록시 서버 : 클라이언트의 요청을 처리할 수 있는 애플리케이션 서버 선택 후 전달
포워드 프록시(캐시) 서버 : 미리 데이터를 저장해 뒀다가 요청이 오면 데이터 전달 > 반복되는 요청을 빠르게 처리하기 위해서 사용(처음 접속할때도 거침)
서버 하드웨어 폼팩터
- 랙 마운트형 서버
랙서버라고 불리며 서버들이 꽂아져 있음
- 블레이드형 서버
랙마운트형 서버를 더 얇고 케이스가 없지만 전원장치를 공유한다.
- 타워형 서버
일반 데스크탑pc와 유사함
서버 하드웨어 유형
- Main Fame (IBM)
- UNIX
금융권에서 보통 사용
- X86 ( 중소기업 ~ 대기업 )
대부분이 기업이 사용하는 보편적인 서버
서버 소프트웨어 유형
- UNIX
AIX, hpUX, Oracle SOLARIS
- 오픈소스 LINUX
debian, UBUNTU, CentOS
- 상용 LINUX
RedHat, SUSE
- 웹 서버
APACHE (http server project), MS IIS, NGINX
- 애플리케이션 서버
Apache Tomcat, WildFly, JBoss, IBM WebSphere, ORACLE Weblogic, JEUS
- FTP 서버 (파일 교환 서버)
FileZilla, Exchange
2. 네트워크
Net + Work : 그물을 짜는 행위 > 그물처럼 연결된 상태를 뜻함
회선 교환 방식 : 1:1로 연결된 데이터 통로를 만들고 연결동안 회선 점유
패킷 교환 방식 : 필요한 만큼 회선을 이용해 다른 사용자도 함께 사용가능
네트워크 기기
- L1 스위치 : PC나 서버를 네트워크에 연결 (허브, AP)
- L2 스위치 : MAC주소를 보고 같은 네트워크의 다른 단말기로 패킷 전송 (MAC address, 이더넷)
- L3 스위치 : IP Address 사용하여 원거리 통신 가능 (라우터, 라우팅) > www
- L4 스위치
트래픽 : 데이터양을 서버에 일정하게 분산하는 것
방화벽 : IP주소와 포트번호를 참조하여 통신을 허가, 차단 > Blacklist, Whitelist
- L7 스위치
URL주소기반으로 작동
웹방화벽 > Blacklist, Whitelist, 웹 트래픽 분석(XSS, SQL Injection)
네트워크 형태
LAN : 선으로 연결
WAN : 원거리 통신 (WWW)
DMZ : 비무장지대, 외부 네트워크와 내부 네트워크의 중간 지점
VPN : 사설 네트워크에 안전하게 접근하기 위해 가상의 전용선을 만들어 통신하는 기술
3. 스토리지
스토리지 : 저장장치를 다수 장착한 대용량 고속 저장 장치(서버 및 클라이언트와 네트워크로 연결)
데이터 저장 및 공유 목적으로 사용
* 저장장치 : 비휘발성 기억장치 (HDD, SSD, Tape)
스토리지 저장 방식
- RAID : 여러 개의 디스크를 하나의 디스크 모듈로 사용
0 : 데이터를 여러 디스크에 분산해서 성능↑, 장애 발생 시에 데이터 모두 손실
5, 6 : 패리티도 함께 저장하여 복구 가능
RAID 1 + 0 : 전체 용량의 50%만 사용 가능하여 서능이 절반만 올라가지만 안전성이 올라감
- JBOD : 용량만 늘어나게 하는 것 (분산저장X)
스토리지 종류
DAS : 전용 케이블로 서버, 클라이언트를 직접 연결한 스토리지 > 전송 속도가 빠름
NAS : 파일 공유에 최적화 되어있는 스토리지 > 스토리지 전용 OS를 가지고 있음
(UTP 케이블로 연결)
SAN : 대용량 데이터를 빠르게 주고 받기 위한 고속 스토리지
(Fiber Channel이라는 광테이블로 연결)
스토리지 유형
1. 파일 스토리지 : 데이터를 파일로 이루어진 계층 구조에 저장 > 데이터가 늘어나면 성능이 떨어짐(NAS)
2. 블록 스토리지 : 데이터를 일정한 크기의 블록으로 나눠서 분산 저장, 메타데이터 처리에 한계가 있어 비정형 데이터 처리에 불리함. (SAN)
3. 오브젝트 스토리지 : 오브젝트라는 객체에 분산 저장, 개별 비정형 데이터에 알맞지만 수정이 불가능해 정형 데이터엔 적합하지 않음 (AWS S3)
백업
3,2,1 법칙 : 최소 3개 이상의 데이터 마련, 2개의 복제본을 서로 다른 장치에 저장, 복제본 중 1개는 외부에 보관
백업 종류
- FULL Backup : 배업 주기마다 전체 데이터 백업
- Incremental Backup : 첫번째만 전체 데이터 백업, 다음부턴 증가된 데이터만 백업
- 스냅샷 : 특정 스토리지의 파일 시스템을 포착해 보관
Copy-on-write 스냅샷 : 쓰기 작업 발생 시, 복제 후 해당 복제본을 새로운 공간에 덮어씀 (읽기1, 쓰기2)
Redirect-on-wirte 스냅샷 : 쓰기 작업 발생 시, 새로운 공간으로 쓰기 위치를 재지정 (쓰기1)
백업 하드웨어 : Dell, Veritas
백업 소프트웨어 : Veeam, Commvault
4. 데이터베이스
- 오픈소스 DB
MYSQL, MariaDB, pOSTGREsql
- 상용DB
MS SQL, ORACLE DB 등
- NoSQL (Not Only SQL)
전체 DB의 IDE를 한번에 제공 > Toad by quest, DataGrip
5. 온프레미스
기업이 자체 시설에서 보유하고 직접 유지 관리하는 프라이빗 데이터 센터
3Tier 아키텍처
서버, 네트워크, 스토리지로 구성된 아키텍처
한계점 3가지
1. 상면 공간이 제한되어 있어 무한정 서버를 늘릴 수 없다.
2. 물리 서버의 자원 활용률이 30~40% 수준으로 낮음
3. 전력이 많고 과열 발생
가상화
서버 가상화 : 하이퍼바이저 단일 물리적 머신에서 여러 가상 머신을 실행하는 데 사용할 수 있는 소프트웨어 를 통해 가상머신을 생성하여 여러 OS운영
데스크탑 가상화 : 데이터는 서버에 저장하고, 서버에 클라이어트에 업무 환경만 제공
네트워크 가상화 : 다수의 물리적 네트워크를 하나의 가상 네트워크로 사용
스토리지 가상화 : 물리서버의 디스크와 스토리지를 하나의 스토리지 풀로묶어 사용
HCI와 SDDC
- HCI : 컴퓨팅, 스토리지, 네트워크를 가상화하여 단일 시스템으로 운영(CVM이 운영)하여 병목현상(장비를 늘리지만 성능이 늘지 않음)을 해결함
- SDDC : 소프트웨어로 관리되는 HCI기반의 데이터센터
SDDC = SDC(서버 가상화) + SDS(스토리지 가상화) + SDN(네트워크 가상화) + Management Platform
6. 클라우드
클라우드 : IT인프라 자원을 직접 보유해서 사용하는 것이 아닌, 다른 기업의 IT인프라 자원을 빌려서 쓰는 것
온프레미스 : 기업이 직접 IT인프라 운영
프라이빗 클라우드 : 기업이 보유한 IT인프라를 클라우드 서비스처럼 기업 내에서 활용
퍼블릭 클라우드 : 다른 기업의 IT인프라 빌림
멀티 클라우드 : 퍼블릭 + 퍼블릭 클라우드
하이브리드 클라우드 : 플라이빗 + 퍼블릭 클라우드
VS
웹 호스팅 : IDC(인터넷 데이터 센터)의 특정 서버 자원을 빌려씀
서버 호스팅 : IDC의 특정 서버 자체를 빌려씀 > 우리회사만씀
코로케이션 : 내가 가진 서버를 IDC의 랙에 설치하고 IDC가 제공하는 네트워크 및 관리 서비스를 받음
클라우드 기술 및 용어
컨테이너(Container) : APP별로 가상화한 후, 하나의 OS사용, 리눅스 기반 애플리케이션 운영을 위한 프로세스 격리 기술로, 쉽게 사용하도록 만든 컨테이너 런타임 중에 도커가 있음
쿠버네티스 : 다수의 컨테이너를 효율적으로 운영하고 관리하기 위한 도구(구글의 오픈소스로 공개)
가상머신 : OS별로 가상화
파드(Pod) : 컨테이너드릥 모음
(워커) 노드 : 파드가 모인것
클러스터 : 노드들의 모음
마스터 : 다수의 워커 노드와 컨테이너를 관리하는 노드
7. 개발 모델 및 방법론
개발 모델
폭포수 방법론 : 전체 서비스 개발을 각각의 단계별로 순서대로 진행
모놀리식 아키텍처 : 애플리케이션계획, 설계, 개발, 테스트, 배포 모든과정을 한번에 수행하는 모델
애자일 방법론: 서비스의 기능, 요소 별로 [설계–개발–테스트–출시] 과정을반복
마이크로서비스 아키텍처: 애플리케이션의 각 요소(기능)별로 계획, 설계, 개발, 테스트, 배포하는 모델
개발 방법론
데브옵스(DevOps) : 개발자 + 운영자의 업무를 통합해 배포 속도를 높임
CI/CD : 연속적인 통합 / 연속적인 배포를 자동화를 통해 빠르게 배포
Low Code : GUI기반의 빠른 개발을 위해 사용하는 플랫폼
No Code : GUI기반의 코딩 경험이 전혀 없는 사람을 위한 앱 개발 플랫폼
< 시민 개발자 > 개발자가 아니지만 업무용 소프트웨어를 직접 개발하는 임직원
8. 앱 운영 관련 기술
고가용성
고가용성 : 장애없이 시스템이 운여되도록 하는 조치
SPOF : 장애가 발생하면 전체 시스템이 다운되는 지점
이중화 : 각종 자원을 이중, 그 이상으로 구성하는 기술 > 2대로 이중화하면 비용이 증가하고 자원이 낭비된다.
클러스터링 : 이중화의 효율을 높이기 위해 여러 대의 컴퓨터를 병렬로 연결하여 하나의 서버처럼 사용하는 기술
Failover : 실패를 끝내면서 장애를 대하고 예비 시스템으로 자동 전환함
모니터링
모니터링 : 지속적인 감시를 통해 상태를 확인하고 오류를 대비
서버, 애플리케이션(APM), DBMS, 네트워크, 클라우드(AWS, Azure, GCP), 클라우드 비용 모니터링 등이 있음.
옵저버빌리티 : 아직 발생되지 않은 위험 요소를 알려줌.
자동화
사람의 개입을 줄이면서 임무를 수행함.
IaC : 개발자가 직접 코드를 만들어 IT인프라를 생성 및 관리 > Playbook이라는 템플릿을 통해 GUI기반에 워크플로우를 생성함
AIOps :AI가 IT운영
9. 보안 관련 기술
엔드포인트 보안
바이러스, 웜, 트로이목마, 랜섬웨어
AV : 악성코드를 찾아내고 치료, 방어하는 소프트웨어
Endpoint : 기업 네트워킁에 연결된 최종 단계의 기기
MC Defender : 무료 방어 소프트웨어
EDR : AV에서 진화된 보안 솔루션
네트워크 보안
방화벽 : 패킷을 모니터링하고 접근을 차단
IDS/IPS : 네트워크 침입 탐지 및 방지 시스템
UTM(Unified Threat Management) : 다양한 보안기느응ㄹ 제공하는 통합위협관리 솔루션
접근 제어
RBAC : 사용자 역할 별로 권한을 부여하여 접근제어
NAC : 유무선 환경에서 내부 네트워크망으로 접근하는 다양한 단말기기를 통제하는 보안 솔루션
DB 접근 제어
IAM( Identity and Access Management )
기업에서 적합한 사람과 디바이스만 필요할 때, 접근할 수 있도록 허용하는 구조
ABAC : 속성에 따라서 접근제어(사용자, 기기, 접속 상태, 접근하려는 리소스 고려)
IAM을 통해 SSO계정 하나를 통해 모든 계정을 관리할 수 있음
Zero Trust
사용자 기기가 증가함에 있어서 직원별로 경우의 수가 너무 광범위해짐
> 믿을 만한게 없으니까 싹다 검증하자.
사용자 및 엔드포인트 기기 검증, 최소 권한 부여, 지속적인 모니터링, 정책 관리 및 차단 등 지속적으로 다양하게 검사