인공지능 강의가 마무리 되었고, 4/24부터 5/25 까지 약 한달 간 WEB에 대해 배운다. 5/26 이후 부터는 빅프로젝트 시작이므로 실질적으로 한 달만 수업을 들으면 에이블 스쿨 강의는 끝났다고 생각해도 무방하다. 13주차에는 1일차에 IT인프라, 2-3일 차엔 웹 프로그래밍, 4-5일 차에는 WEB/WAS/DB에 대해 학습한다. 일주일만에 이 모든 내용을 다루기엔 시간이 너무나 부족하기에 기초적인 내용을 배울 것으로 예상된다. WEB은 전공 과목으로 조금 배운게 전부여서 정말 집중해서 들어보려 한다.
IT 인프라
실습 없이 이론만 다룬 강의였다. 내용을 정리하다 보니 양이 너무 방대해 새로 알게된 내용에 대해서만 간단하게 줄여보았다. 정리한 내용은 강의 흐름과 관련 없으니 참고바란다.
- 서버
: 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 장치
웹 서버 | 정적 콘텐츠을 클라이언트에 전달 |
애플리케이션 서버 | 동적 콘텐츠을 클라이언트에 전달 |
데이터베이스 서버 | 애플리케이션의 정보를 저장해서 운영, 관리할 수 있는 데이터베이스를 구동하는 서버 |
리버스 포록시 서버 | 클라이언트와 서버가 서로 데이터를 주고받을 수 있도록 전달 (대기열) |
포워드 프록시 서버 | 미리 데이터를 저장해 뒀다가 요청이 오면 데이터 전달 |
- 클라이언트
: 네트워크를 통하여 서버에 접속해 정보를 확인하거나 서비스를 이용하는 장치
- 네트워크
: 메인프레임에서 한 번에 처리하던 것을 여러 대의 단말기로 나누어 처리하기 위해 메인프레임과 단말기들을 전화선으로 연결한 것이 네트워크의 시작
미국 DARPA(Defense Advanced Research Projects Agency)에서 연구 목적으로 만든 네트워크로 패킷 교환 방식을 처음으로 사용한 네트워크이며, 현재의 인터넷의 시초가 됨
회선 교환 방식(Circuit Exchange Method) : 데이터를 교환하기 위해 1:1로 연결된 데이터 통로(회선)를 만들고 데이터 교환이 완료될 때까지 회선을 계속 사용하는 방식
- 패킷 교환 방식
: 데이터를 패킷이라는 작은 단위로 나누고 헤더라는 정보를 붙여 데이터를 교환하는 방식
헤더에 송수신 포트번호, 패킷 순서 번호, 데이터 시작 위치 등 포함
필요한 만큼만 회선을 이용하며 같은 회선을 다른 사용자들도 함께 사용 가능
패킷이 손상될 경우 데이터 전체를 다시 보내지 않고 손상된 패킷만 보냄
- 프로토콜
: 패킷을 전송하기 위한 규칙
HTTP(Hypertext Transfer Protocol): 웹서버와 웹브라우저가 패킷을 교환할 때 사용하는 프로토콜
DNS, FPT, SSL/TLS, TCP, UDP, SNMP, IEEE, ARP 등 많은 종류의 프로토콜이 있음
- 네트워크 계층
- 네트워크 기기
1. L1
(1) NIC(Network Interface Card) : PC나 서버를 네트워크에 연결해주는 하드웨어
(2) 허브(Hub) : 전달받은 패킷(비트)의 복사본을 포트에 연결된 다른 모든 기기로 전송
연결된 기기들이 네트워크 대역폭(Bandwidth) 을 나눠서 쓰기 때문에 데이터 전송 성능이 떨어짐
※ 대역폭 : 네트워크 회선이 초당 처리할 수 있는 비트의 양, bps(bit per second)
(3) AP(Access Point) : 패킷을 전파로 바꿔서 송출하는 기기, 무선과 유선 사이의 다리 역할을 수행, 무선 WIFI 네트워크 환경에 반드시 필요한 네트워크 기기
2. L2
(1) MAC Address : Media Access Control Address, 컴퓨터들이 서로 데이터를 전송하기 위해 사용하는 물리적
(2) 이더넷(Ethernet) : 네트워크 환경에서 데이터를 주고 받기 위한 가장 대표적인 기술 규격. UTP(Unshielded Twisted Pair) 케이블로 단말기와 네트워크 기기를 연결함
(3) L2 스위치(Switch) : 단말기가 보낸 패킷(프레임)의 헤더에 있는 MAC Address를 보고 같은 네트워크의 다른
단말기로 패킷을 전송, 이더넷(Ethernet) 규격을 사용하기에 이더넷 스위치라고도 부름
3. L3
(1) IP Address : Internet Protocol Address, 서로 다른 네트워크에 연결되어 있는 컴퓨터들이 데이터를 전송하기 위해 사용하는 논리적 주소로 OS상에서 설정한 주소임
(2) 라우터(Router) : 단말기가 보낸 패킷(IP 패킷)의 헤더에 있는 IP Address를 보고 다른 네트워크의 다른 단말기로 패킷을 전송(라우팅)
(3) FPGA(Field Programmable Gate Array) : 프로그래밍이 가능한 집적 회로 반도체, 용도에 따라 프로그래밍을 통해 기능을 변경할 수 있음
(4) ASIC(Application-Specific Integrated Circuit) : 특정 용도를 위해 설계된 주문형 집적회로 반도체. 한번 용도에 맞게 제작되면 다시 기능을 프로그래밍하거나 수정 불가능
(5) L3 스위치(Switch) : 라우터에 L2 스위치를 추가한 네트워크 기기. 다수의 포트가 있어 여러 단말기를 연결할 수 있으며 IP 패킷 라우팅도 가능
4. L4
(1) L4 스위치(Switch) : IP주소와 포트 번호를 참조하여 트래픽을 분산해 서버로 전송하는 로드 밸런싱 기기
(2) 로드 밸런싱(Load Balancing) : 들어오는 트래픽을 둘 이상의 서버로 분산해서 전송하여 부하를 분산하는 것
(3) 트래픽(Traffic) : 서버와 네트워크 장치에서 일정 시간 내에 흐르는 데이터의 양
(4) 방화벽(Firewall) : IP주소와 포트 번호를 참조하여 통신을 허가하거나 차단하는 기기
5. L7
(1) L7 스위치(Switch) : IP 주소와 포트 번호 + 애플리케이션 콘텐츠 정보들을 참조해서 로드 밸런싱 하는 기기
(2) 웹방화벽(WAF : Web Application Firewall) : 웹 애플리케이션 서버를 안전하게 보호하는 기기
(3) 웹 트래픽 분석 : 사용자가 서버로 보내는 트래픽을 분석하여 정책에 따라 조치함
(4) XSS(Cross-Site Scripting) : 애플리케이션에 악성 스크립트를 심어두고 사용자가 접속하면 공격해서 정보 갈취
(5) SQL Injection : 악성 SQL을 실행하여 데이터베이스 정보를 조작(데이터 수정 혹은 삭제)
- 네트워크 형태
(1) LAN: 근거리 통신망, 가정이나 기업 내부의 한정된 범위의 네트워크
(2) WAN: 원거리 통신망, 물리적으로 거리가 매우 떨어진 곳의 네트워크를 연결
(3) 인터넷: 모든 컴퓨터를 하나의 통신망 안에 연결하고자 함. 다수의 WAN
(4) 월드와이드웹: 인터넷에 연결된 사람들이 정보를 공유할 수 있는 공간
(5) VPN(Virtual Private Network) : 인터넷 상에서 가상의 전용선을 만들어 통신할 수 있게 하는 기술. WAN으로 peer to peer, 1:1로 연결하고 이 통신을 암호화 함
(6) DMZ(DeMilitarized Zone) : 비무장지대, 외부 네트워크(외부망)와 내부 네트워크(내부망)의 중간 지점
- 스토리지
: 저장장치를 다수 장착한 대용량 고속 저장 장비로 서버 및 클라이언트와 네트워크로 연결해서 사용.
(1) RAID (여러 개의 디스크 중 일부에 데이터를 중복 저장하는 기술)
- RAID 0 : 데이터를 여러 디스크에 분산 저장하여 하나의 디스크처럼 사용, 성능이 좋지만 장애 시 데이터는 모두 손실됨
- RAID 1 : 데이터를 다른 디스크에 동일하게 중복 저장하여 안정성이 높지만 비용이 많이 듬
- RAID 5 : 디스크에 패러티 정보를 저장해 장애 시 패러티를 토대로 복구할 수 있음, 일정 수준의 성능과 안정성 확보
- RAID 6 : RAID 5 방식에 패러티를 하나 더 추가하여 안정성을 더욱 향상시킨 방법
- RAID 1+0 : RAID 0의 높은 성능과 RAID 1의 뛰어난 안정성을 합친 형태
(2) JBOD
: 2개 이상의 디스크를 하나의 디스크처럼 만들어 주는 것
(3) DAS
: 직접 연결한 스토리지
(4) NAS
: 파일 서버 용도로 주로 사용되며 스토리지라고도 불림
NAS 자체가 메인보드, CPU, RAM, 스토리지를 갖춘 하나의 서버 역할을 수행하기에 파일 공유 뿐만 아니라 다양한 서버 용도로 사용할 수 있음
네트워크 공유 들이브로 독립적으로 동작
반드시 네트워크 스위치를 거쳐 NAS에 접근해야 하기에 DAS보다 데이터 전송 속도가 느림
(5) SAN
: 대용량의 데이터를 네트워크를 통해 빠른 속도로 전송할 수 있는 고성능 스토리지
일반적인 이더넷 네트워크가 아닌 FC(광케이블)을 사용해 연결
스토리지 단독으로는 데이터 저장만 가능하며 읽기/쓰기 작업을 할 수 없고 반드시 서버와 연결해야 읽기/쓰기 작업이 가능한 종속성을 가짐
- 스토리지 유형
1. 파일 스토리지
: 데이터를 파일과 폴더로 이루어진 계층 구조에 저장 (NAS)
2. 블록 스토리지
: 데이터를 일정한 크기의 블록으로 나눠서 분산 저장 (SAN), 비정형 데이터 처리에 불리
3. 오브젝트 스토리지
: 오브젝트라는 개별 데이터 객체로 분산 저장, 비정형 데이터 저장에 알맞음
오브젝트 수정이 불가능해 잦은 수정이 필요한 정형 데이터는 맞지 않음
-데이터 유형
(1) 정형(Structured) 데이터 : 미리 정해 놓은 형식과 구조에 따라 고정된 필드에 저장된 텍스트 형태의 데이터
(2) 비정형(Unstructured) 데이터 : 식별 가능한, 미리 정의된 구조가 없는 사진, 음성, 동영상, PDF파일 등의 데이터
- 백업
: 데이터를 임시로 다른 장치에 저장하여 문제가 있을 때 복구할 수 있도록 준비
(1) Full Backup: 백업 주기 마다 데이터 전체 백업
(2) Incremental Backup: 증가된 데이터만 백업
(3) 스냅샷: 특정 시점에 스토리지 파일 시스템을 포작해 보관하는 기술
(4) Copy-on-write 스냅샷: 쓰기 작업 발생 시 복제 후 해당 복제본 새로운 공간에 덮어씀
- RDBMS (관계형 DBMS)
: 테이블이라는 최소 단위로 구성하며 이 테이블은 열과 행으로 이루어짐
- NoSQL
: 대용량 데이터를 분산 처리하기 위한 SQL이 아닌 또 다른 기술을 채택한 오픈소스 DB
key-value / document / column-family / graph
- 온프레미스
: 기업이 자체 시설에서 보유하고 직접 유지 관리하는 프라이빗 데이터 센터
3tier 아키텍처 구조(서버, 네트워크, 스토리지)
- 가상화
: 하드웨어가 보유한 자원 효율성을 향상시키기 위해 사용되는 기술
서버 가상화, 데스크탑 가상화, 네트워크 가상화, 스토리지 가상화
(1) 서버 가상화
: 하이퍼바이저를 통해 가상 머신을 생성, 여러 개의 OS를 운영하는 기술
(2) 데스크탑 가상화
: 데이터는 서버에 저장하고, 서버에서 클라이언트에 업무 환경만 제공해주는 기술
(3) 네트워크 가상화
: 다수의 물리적 네트워크를 하나의 가상 네트워크로 구성해 사용하는 기술
(4) 스토리지 가상화
: 물리서버의 디스크와 스토리지를 하나의 가상 스토리지 풀로 묶어 사용하는 기술
- HCI
: 컴퓨터, 스토리지, 네트워크를 가상화시켜 단일 시스템으로 운영
- SDDC
: 데이터 센터 구성 요소의 모든 것을 소프트웨어로 통합 관리
SDC+SDS+SDN+ Management Platform 4가지가 모두 포함되어야 진정한 SDDC
- 클라우드
: IT인프라 자원을 직접 보유해서 사용하는 것이 아닌, 다른 기업 IT인프라 자원을 빌려서 쓰는 것
- 클라우드 형태
(1) 온프레미스
: 기업이 직접 IT인프라를 운영
(2) 퍼블릭 클라우드
: 다른 기업의 IT인프라를 빌려다 씀
(3) 프라이빗 클라우드
: 기업이 보유한 IT인프라를 클라우드 서비스처럼 기업 내에서 활용
(4) 하이브리드 클라우드
: 프라이빗 클라우드 + 퍼블릭 클라우드
(5) 멀티 클라우드
: 퍼블릭 클라우드 + 퍼블릭 클라우드
- 컨테이너
: 리눅스 기반 애플리케이션 운영을 위한 프로세스 격리 기술
- 컨테이너 런타임
: 컨테이너를 다루는 도구
- 도커
: 컨테이너 기술을 누구나 쉽게 사용할 수 있도록 만든 컨테이너 런타임 중 유명한 오픈소스 프로젝트
- 컨테이너 vs 가상머신
: 컨테이너는 앱 별로 가상화 vs VM은 OS별 가상화
- 쿠버네티스
: 다수의 컨테이너를 효율적으로 운영, 관리하기 위한 도구
- 개발 모델
(1) 모놀리식 아키텍처: 애플리케이션 계획, 설계, 개발, 테스트, 배포 모든 과정을 한번에 수행하는 모델
(2) 마이크로서비스 아키텍처: 애플리케이션의 각 요소 별로 계획, 설계, 개발, 테스트, 배포하는 모델
- 개발 방법론
(1) 워터폴
: 요구사항 정의 -> 디자인 -> 개발 -> 테스트 -> 배포 과정이 순차적
(2) 애자일
: 변화하는 고객의 요구 사항에 빠르게 대응하기 위한 개발 방식
(3) 데브옵스
: 개발 및 테스트부터 배포 및 운영까지의 업무를 통합해서 앱 개발 및 배포 속도를 높이려는 접근 방식
(4) CI/CD
: 애플리케이션 개발 및 배포 단계를 자동화하여 보다 짧은 주기로 빠르게 애플리케이션 제공하는 방법론
- DevOps, CI/CD를 지원하는 대표적인 클라우드 서비스
: AWS, Azure, GCP, NCP, No Code, Low Code
- 앱 운영 관련 기술
- SPOF(Single Point of Failure) : 단일 장애 지점, 장애가 발생하면 전체 시스템이 다운되는 지점 -> SPOF 현상을 예방해야 할 필요성이 있음.
1. 고가용성
: 시스템이 긴 시간 동안 장애 없이 안정적으로 운영되도록 취하는 조치
(1) 이중화
: 서비스 안정성을 이해 각종 자원들을 이중 이상으로 구성하는 기술
(2) 클러스터링
: 여러 대의 컴퓨터를 병렬로 연결 시스템, 고장나면 failover되어 standby된 컴퓨터에서 대신 수행해줌. 다시 정상화가 되면 failback 되어 장애 발생 전 단계로 전환
- 옵저버빌리티
: 관측가능성 혹은 관측능력, 전통적인 모니터링이 가진 한계를 극복한 가시성 확보 방안
기존 모니터링과 옵저버빌리티의 차이 : 모니터링은 무엇이 잘못되었는지를 알려주지만 옵저버빌리티는 잘못된 이유를 이해할 수 있도록 함, 알려지지 않고 모르고 있던 문제를 빠르게 탐지, 조사, 해결하는데 도움을 줌
- 자동화
: 정보 기술 서비스 및 솔루션을 제공하는 데 사용되는 하드웨어, 소프트웨어, 네트워킹 구성 요소, 운영 체제(OS), 데이터 스토리지 구성 요소를 제어하기 위해 사람의 개입을 줄이면서 임무를 수행하는 기술을 사용하는 것
IaC(Infra as a Code) : 개발자가 직접 코드를 만들어 IT인프라를 생성, 배치, 관리하는 기술
AIOps : AI + Ops(Operations), IT 운영의 자동화 및 관리를 위해 빅데이터 분석에 머신러닝을 적용하는 것