🌝 IT 인프라
🌍 서버
서버와 클라이언트
- 서버: 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 장치
- 클라이언트: 네트워크를 통해 서버에 접속해 정보를 확인하거나 서비스를 이용하는 장치
서버의 역할 및 종류
- 웹 서버: 정적 콘텐츠 (텍스트, 이미지 등) -> 안움직임
- 애플리케이션 서버: 동적 콘텐츠 (소스코드, 텍스트, 이미지 등) 움직임
웹 서버에서 동적 콘텐츠를 이용하려면 애플리케이션 서버에 요청하여 사용한다.
클라이언트 - 웹 서버 - 애플리케이션 서버 - DB 서버
- 리버시 프록시 서버
- 클라이언트와 서버가 서로 데이터를 주고받을 수 있도록 전달
- 클라이언트가 너무 많을 때 클라이언트 요청을 애플리케이션 서버 B와 C에 나누어서 분배해준다.
클라리언트 - 웹 서버A - 리버스 프록시 서버(다음에 어디로 보낼지 선택) - 애플리케이션 서버B/C - DB 서버
- 포워드 프록시 서버: 미리 데이터를 저장해뒀다가 요청이 오면 데이터 전달
처음 요청이 올 때 :클라리언트 - 웹 서버 - 리버스 프록시 서버 - 애플리케이션 서버 - DB 서버 - 캐시 서버 - 웹서버 - 클라이언트
나중에 동일 요청이 올 때 : 클라리언트 - 웹 서버 - 리버스 프록시 서버 - 애플리케이션 서버 - 캐시 서버 - 웹서버 - 클라이언트
서버 하드웨어 유형
- 메인 프레임
- UNIX : Main Frame의 경량화 버전, 대형 업체에서 많이 사용
- X86 : 중소기업부터 대기업까지 가장 많이 사용하는 서버 유형, 가장 흔하다
서버 하드웨어 제조사

서버 소프트웨어
- 오픈소스 소프트웨어: 누구나 무료로 다운받아 사용할 수 있다. ex) git, python 등
- 상용 소프트웨어: 유료 소프트웨어 ex) 포토샵, 일러, 한글 등
서버 OS
- UNIX : Main Frame에서 가장 많이 사용
- LINUX : X86에서 가장 많이 사용
- 오픈소스 LINUX: debian, ubuntu, centos
- 상용 LINUX : redhat, suse
- Microsoft windows server: X86에서 사용, 무료
웹 서버
- apache
- nginx
- microsoft IIS
기타 서버 소프트웨어
- filezilla : 로컬에 파일이 없지만 공유를 통해 로컬에 있는 것처럼 사용할 수 있게끔 해준다.
- exchange : 메일 서버
🌍 네트워크
네트워크 개념
- 네트워크: 그물처럼 연결된 상태
- IT 네트워크: 하나의 거대 메인 프레임에서 처리하던 것을 여러 대의 단말기로 나누어 처리하기 위해 메인 프레임과 단말기들을 전화선으로 연결한 것. (메인프레임이 다 처리하면 한번에 동시에 처리할 수 없기 때문에 비효율적이다.)
네트워크 방식
- 회선 교환 방식: 데이터 교환하기 위해 1:1로 연결된 데이터 통로를 만들고 데이터 교환이 완료될 때까지 회선을 계속 사용하는 방식. 연결된 동안 그 회선에 누구도 침범할 수 없다. (회선점유)
- 패킷 교환 방식: 데이터를 패킷이라는 작은 단위로 나누고, 헤더라는 정보를 붙여 데이터를 교환하는 방식
- 헤더: 송수신 포트번호, 패킷 순서 번호, 데이터 시작위치, 한번에 전송할 수 있는 데이터의 양
- 패킷: 소포
- 패킷이라는 택배 물품에 헤더라는 송장을 붙여 보낸다.
- 필요한 만큼만 회선을 이용하며 같은 회선을 다른 사용자도 함께 사용할 수 있음
- 패킷이 손상될 경우 데이터 전체를 다시 보내지 않고 손상된 패킷만 보냄
네트워크 프로토콜과 계층
- 프로토콜: 패킷을 전송하기 위한 규칙(정해진 규칙을 따르기 때문에 통신이 가능함)
- HTTP: 웹 서버와 웹 브라우저가 패킷을 교환할 때 사용하는 프로토콜
- 계층: 송신 기기와 수신 ㄱ기기 사이에서 주고 받는 데이터는 각 계층 별로 처리됨
- 계층 별로 처리: 한 계층에서 처리가 완료되면 임무를 다음 계층으로 전달

네트워크 기기: L1
- NIC: PC나 서버를 네트워크에 연결해주는 하드웨어 (유선/무선)
- 허브: 전달받은 패킷의 복사본을 포트에 연결된 다른 모든 기기로 전송
- 연결된 PC가 많을수록 성능이 떨어진다.
- 하나의 허브를 여러대가 나눠서 사용하기 때문
- AP: 패킷을 전파로 바꿔서 송출하는 기기, 무선과 유선 사이의 다리 역할을 수행
네트워크 기기: L2
- MAC Adress: 컴퓨터들이 서로 데이터를 전송하기 위해 사용하는 물리적 주소로 NIC에 내장되어 있음
- 이더넷
- L2 스위치(이더넷 스위치)
네트워크 기기: L3
- IP Address
- Public IP Address
- Private IP Address
- 라우터
- FPGA
- ASIC
- L3 스위치
네트워크 기기: L4
네트워크 기기: L7
- L7 스위치
- 웹방화벽
- 블랙리스트
- 화이트리스트
- 웹 트래픽 분석
- XSS
- SQL
네트워크 형태
- LAN: 근거리 통신망
- WAN: 원거리 통신망
- 인터넷: WAN을 여러게 모으면 인터넷
- 월드와이드웹: 인터넷을 통해 사람들이 정보를 공유할 수 있는 공간
- VPN: 인터넷 상에서 가상의 전용선을 만들어 통신할 수 있게 하는 기술
- DMZ: 비무장지대, 외부네트워크와 내부 네트워크의 중간지점
- 내부망에는 존재하나 외부망에서 접근할 수 없는 영역으로 외부망에 잇는 해커의 공격으로부터 기업의 중요한 서버와 클라이언트를 보호하기 위해 사용

🌍 스토리지
- 스토리지: 저장장치를 다수 장착한 대용량 고속 저장 장비로 서버 및 클라이언트와 네트워크로 연결해서 사용
- 저장장치: 컴퓨터의 데이터를 저장하기 위한 비휘발성의 기억장치
- 스토리지 데이터 저장 방식 : RAID
- 여러 개의 디스크 중 일부에 데이터를 중복 저장하는 기술
- RAID 0: 데이터를 여러 디스크에 분산 저장하여 하나의 디스크처럼 사용, 성능이 좋지만 장애 시 데이터는 모두 손실됨.
- RAID 1: 데이터를 다른 디스크에 동일하게 중복 저장하여 안정성이 높지만 비용이 많이 듬.
- RAID 5: 디스크에 패러티 정보를 ㄹ저장해 장애 시 패러티를 토대로 복구할 수 있음. 일정 수준의 성능과 안정성 확보
- RAID 6: RAID 5 방식에 패러티를 하나 더 추가하여 안정성을 더욱 향상시킨 방법.
- JBOD: 2개 이상의 디스크를 하나의 디스크처럼 만들어 주는 것.
- DAS
- NAS
- SAN
- 대용량의 데이터를 네트워크를 통해 빠른 속도로 전송할 수 있는 고성능 스토리지
파일 스토리지
- 하나의 파일을 하나의 공간에 저장
- 데이터를 파일과 폴더로 이루어진 계층 구조에 저장
- 전통적인 방식
- 데이터 양이 늘어날 수록 성능이 떨어짐
- NAS
블록 스토리지
- 하나의 데이터를 일정한 크기의 블록으로 나눠서 저장
- 대규모 트랜잭션이 필요한 환경에 주로 활용
- 비용이 많이 들고 메타데이터 처리에 한계가 있어 비정형 데이터 처리에 불리
- 정형데이터
- SAN
오브젝트 스토리지
- 오브젝트라는 개별 데이터 단위로 분산 저장
- 비정형데이터
- AWS S3
백업
- 백업: 데이터를 임시로 다른 장치에 저장하여 문제가 있을 때 복구할 수 있도록 준비해 두는 것
- 스냅샷: 마치 사진 찍듯이 특정 시점에 스토리지의 파일 시스템을 포착해 보관하는 기술
- 백업 하드웨어: 백업을 위한 전용 스토리지
🌍 데이터베이스
- 데이터베이스: 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합, 응용시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음.
- DBMS: 사용자들이 DB안에 있는 데이터를 접근할 수 있도록 해주는 소프트웨어.
- 관계형 DBMS: 테이블이라는 최소 단위로 구성하며 이 테이블은 열과 행으로 이루어짐.
- SQL: 구조적 데이터 질의 언어, 데이터베이스에서 데이터를 조회하기 위한 언어
- NoSQL: 대용량 데이터를 분산 처리하기 위한, SQ이 아닌 또 다른 기술을 채택한 오픈소스 데이터베이스
- DB IDE: IDE, DB 엔지니어, DBA, 개발자가 사용하는 DB 개발 도구
- 상용 DB IDE: GUI 지원, 다중 DB 지원, Query 자동완성, 관리자를 위한 기본 모니터링 도구 제공
🌍 온프레미스
- 온프레미스: 기업이 자체 시설에서 보유하고 직접 유지 관리하는 프라이빗 데이터 센터
- 3Tier 아키텍처: 애플리케이션 운영 환경이 컴퓨팅, 네트웤, 스토리지로 구성된 전통적인 아키텍처
- 가상화: 물리적인 하드웨어가 보유한 자원 효율성을 향상시키기 위해 사용하는 기술
- 서버 가상화: 하이퍼바이저를 통해 가상머신을 생성, 여러개의 OS를 운영하는 기술
- 데스크탑 가상화: 데이터는 서버에 저장하고, 서버에서 클라이언트에 업무환경만 제공해 주는 기술 (컴퓨터에 저장 X, 다 서버로 바로 저장된다. -> 보안을 위해)
- 네트워크 가상화: 다수의 물리적 네트워크를 하나의 가상 네트워크로 구성해 사용하는 기술
- 스토리지 가상화: 물리서버와 디스크와 스토리지를 하나의 가상 스토리지 풀로 묶어 사용하는 기술
- HCI: 컴퓨팅, 스토리지, 네트워크를 가상화시켜 단일 시스템으로 운영
- SDDC 가상화: 데이터 센터 구성 요소의 모든 것을 소프트웨어로 통합 관리
- SDC + SDS + SDN + Management Platform 4가지가 모두 포함되어야 진정한 SDDC라고 할 수 있음.
🌍 클라우드
- 클라우드: IT인프라 자원을 직접 보유해서 사용하는 것이 아닌 다른 기업의 IT인프라 자원을 빌려서 쓰는 것
- 클라우드 비용: 자원을 빌려 쓴 것 만큼의 사용료를 월 과금 형태로 지불

-
IaaS: IT인프라 자원 전체를 빌려다 씀, OS 및 각종 소프트웨어 설치 필요
- AWS, AZURE, GCP, NCP, KT CLOUD, NHN CLOUD 등
-
PaaS: 이미 설치된 OS를 빌려다 씀, 애플리케이션 설치 필요
- AWS ELASTIC VEANSTALK, AZURE SQL DB, GOOGLE BIGQUERY 등
-
SaaS: 소프트웨어를 빌려다 씀
- MICROSOFT 365, GOOGLE WORKSPACE, ADOBE CC, ZOOM, GROUPWARE 등
-
온프레미스: 기업이 직접 IT인프라를 운영
-
퍼블릭 클라우드: 다른 기업의 IT인프라를 빌려다 씀
-
프라이빗 클라우드: 기업이 보유한 IT인프라를 클라우드 서비스처럼 기업 내에서 활용
-
하이브리드: 프라이빗 클라우드 + 퍼블릭 클라우드
-
멀티 클라우드: 퍼블릭 클라우드 + 퍼블릭클라우드 (피치못한 장애가 발생한 경우를 방지하기 위해서, 서비스 안정성을 높임)
-
컨테이너: Container, 리눅스 기반 애플리케이션 운영을 위한 프로세스 격리 기술
-
컨테이너 런타임: Container Runtime, 컨테이너를 다루는 도구
-
도커: Docker, 컨테이너 기술을 누구나 쉽게 사용할 수 있도록 만든 컨테이너 런타임 중 가장 유명한 오픈소스 프로젝트
-
컨테이너 vs 가상머신: 컨테이너 앱 별로 가상화 vs VM은 OS 별로 가상화
-
쿠버네티스: 다수의 컨테이너를 효율적으로 운영, 관리하기 위한 도구 (오픈소스, 무료)
- 구글이 오픈소스로 공개, 현재 기업 환경에 맞는 유료 쿠버네티스 서비스가 다수 존재 (EKS, AKS, GKE 등)
-
파드: 앱이 운영되는 컨테이너들의 모음
-
노드: 파드가 운영되는 물리 서버 또는 가상 머신, 워커 노드라고 부름
-
클러스터: 노드들의 집합
-
마스터: 다수의 워커 노드들 및 그 하위의 파드와 컨테이너를 관리하는 노드
🌝 개발자가 알아야 할 IT인프라 운영 및 관리 기술
🌍 개발 모델 및 방법론
개발 모델
- 모놀리식 아키텍처: 애플리케이션 계획, 설계, 개발, 테스트, 배포 모든 과정을 한번에 수행하는 모델
- 마이크로서비스 아키텍처: 애플리케이션의 각 요소 별로 계획, 설계, 개발, 테스트, 배포하는 모델
개발 방법론
- 워터폴: 요구사항 정의 -> 디자인 -> 개발 -> 테스트 -> 배포 과정이 수차적으로 진행
- 애자일: 변화하는 고객의 요구 사항에 빠르게 대응하기 위한 민첩한 개발 방식으로, 작은 단위 별로 디자인 -> 개발 -> 테스트 과정을 반복
- 데브옵스: 개발 및 테스트부터 배포 및 운영까지의 업무를 통합해서 앱 개발 및 배포 속도를 높이려는 접근방식
- CI/CD: 연속적인 통합 / 연속적인 배포
- 애플리케이션 개발 및 배포 단계를 자동화하여 보다 짧은 주기로 빠르게 애플리케이션을 제공하는 방법론
- No Code: 코딩 경험이 전혀 없는 사람을 위한 개발 접근 방식, 코딩을 완전히 건너뛰고 GUI 환경에서 앱 개발 가능
- Low Code: No Code와 동일하게 GUI를 활용하나 커스텀 코딩 가능, 좀 더 수준이 높음, 개발자 대상
- 시민 개발자: 개발자가 아니지만 업무용 소프트웨어를 직접 개발하는 임직원
🌍 앱 운영 관련 기술
고가용성
- 서버 하드웨어 구성요소: 다양한 부품이 서로 유기적으로 연결되어 있음
- 서버 하드웨어 장애: 서버의 모든 요소 마다 장애가 발생할 수 있음
- 서버 소프트웨어 구성요소: OS, OS 기본 프로그램, 다양한 애플리케이션이 함께 동작
- 서버 소프트웨어 장애: OS 자체 버그, 보안 취약점, 애플리케이션 문제 등으로 인한 장애 발생
- SPOF: 단일 장애 지점, 장애가 발생하면 전체 시스템이 다운되는 지점.
- 고가용성: 시스템이 긴 시간동안 장애 없이 안정적으로 운영되도록 취하는 조치
- 이중화: 서비스의 안정성을 위해 각종 자원(하드웨어, OS, 미들웨어, DB 등)을 이중 혹은 그 이상으로 구성하는 기술
- 각 요소 별로 이중화 하는 방법이 다르며, 2대로 이중화 한다 하더라도 장애 발상 가능성을 완벽하게 배제하기 어려움
- 두 서버를 모두 운영해야 하기에 비용 증가, 자원 낭비라는 단점이 있음.
- 클러스터링: 여러 대의 컴퓨터를 병렬로 연결한 시스템으로, 여러 대의 서버를 가상의 하나의 서버처럼 사용하는 기술
- Failover: 실패를 끝냄, 장애 대비 기능, 실제 운영 시스템에 이상이 생겼을 때 예비 시스템으로 자동 전환
- Failback: 실패상태에서 정상으로 되돌림, 실제 운영 시스템을 장애 발생 전 단계로 전환
모니터링
- 모니터링: 지속적인 감시, 감찰을 통해 대상의 상태나 가용성, 변화 등을 확인하고 대비하는 것
- 시스템의 상태나 상황에 문제가 발생하면, 즉각 관리자에게 알림을 보내 빠르게 대처할 수 있도록 도와줌
- 서버 모니터링: 서버 하드웨어 자원 보유 현황, 상태, 자원 사용 현황을 지표로 보여줌
- 애플리케이션 모니터링: JAVA 애플리케이션의 사용자 수, 자원 사용 현황, 트랜잭션 상태 등을 지표로 보여줌
- DBMS 모니터링: 데이터베이스 성능을 향상 최상의 상태로 유지할 수 있도록 도와줌
- 네트워크 모니터링: 네트워크의 전반적인 상태를 분석해 안정적인 네트워크를 제공할 수 있도록 도와줌
- 클라우드 모니터링: 클라우드 자원 사용 현황 및 운영하는 애플리케이션 상태를 보여줌
- 클라우드 비용 모니터링 플랫폼: 자원 사용량에 따라 과금되는 클라우드 서비스 비용을 상세히 보여줌
- 옵저버빌리티: 관측가능성 혹은 관측능력, 전통적인 모니터링이 가진 한계를 극복한 가시성 확보 방안
자동화
- 자동화: 정보 기술 서비스 및 솔류션을 제공하는데 사용되는 하드웨어, 소프트웨어, 네트워킹 구성 요소, 운영체제, 데이터 스토리지 구성 요소를 제어하기 위해 사람의 개입을 줄이면서 임무를 수행하는 기술을 사용하는 것
- IaC: 개발자가 직접 코드를 만들어 IT인프라를 생성, 배치, 관리하는 기술
- 업무 구성: playbook이라는 템플릿을 제공해 어떤 업무를 자동화할 것인지 손쉽게 구성 가능.
- Job 워크플로우 생성: 업무 Playbook을 구한 다음, 구체적으로 어떻게 실행될 것인지 워크플로우 생성.
- AIOps: AI + Ops, IT운영의 자동화 및 관리를 위해 빅데이터 분석에 머신러닝을 적용하는 것.
🌍 보안 관련 기술
엔드포인트 보안: 악성코드 종류
바이러스
- 컴퓨터를 감염시키는 프로그램
- 하드웨어 오작동을 유발하여 간접적으로 손상을 입힘.
웜
- 복제본을 네트워크를 통해 다른 컴퓨터로 전파시키는 악성 프로그램.
- 독립실행 가능, 추가적인 악성프로그램 유포
트로이목마
랜섬웨어
- 사용자 동의 없이 컴퓨터에 설치하고 무단으로 데이터를 암호화시켜 인질로 잡은 뒤 금품을 요구하는 악성 프로그램
엔드포인트 보안: 소프트웨어
- Endpoint: 기업 네트워크에 연결된 최종 단계의 기기 / PC, 노트북, 스마트폰, 태블릿 등
- AV: 컴퓨터의 악성코드를 찾아내고 치료, 방어하기 위한 소프트웨어
- EDR: AV에서 진화된 보안 솔루션, 악성코드를 실시간으로 감지하고 분석 및 대응해서 피해확산을 막는 솔루션
- 방화벽: 네트워크 상의 패킷을 모니터링하고 허용되지 않은 접근은 차단하는 보안 장비
- IDS/IPS: 네트워크 침입 탐지 및 방지 시스템
- UTM: 방화벽, 침입탐지 및 방지, VPN, AV, 필터링 등 다양한 보안기능을 제공하는 통합위협관리 솔루션
- NAC: 유무선 환경에서 내부 네트워크망으로 접근하는 다양한 단말기기를 통제하기 위한 보안 솔루션
- DB 접근제어: 보안을 위해 데이터베이스 접근을 통제하고 관리하는 솔루션
- 데이터 거버넌스: 데이터의 보안, 개인정보 보호, 정확성, 가용성, 사용성을 보장하기 위해 수행하는 모든 작업
- RBAC: 권한이 있는 사용자들에게 한해 시스템 접속을 허용하는 접근제어 방법
- IAM: 기업에서 오직 적합한 사람과 디바이스만 필요할 때 원하는 애플리케이션과 리소스 및 시스템에 접근할 수 있도록 허용하는 구조.
- 기업의 데이터를 안전하게 보호하기 위해 IAM을 사용한다.
- IT관리자의 업무 부담을 줄이고 실수를 방지하기 위해 IAM을 사용한다.
- 다수의 SaaS 및 서비스를 사용하는 사용자의 생산성 향상을 위해 IAM을 사용한다.
Zero Trust: Zero Trust 개념
- Zero Trust: 신뢰가 없다, 아무도 믿지 않는다라는 컨셉의 보안 모델
- IT인프라 보안 환경이 너무 복잡해 짐, 관리 포인트가 너무 많아진 것이 가장 큰 원인
🌍 자주 발생하는 IT인프라 장애 유형 및 대처 방안
404 Not Found
- 웹페이지를 표시할 수 없다는 뜻
- 서버 자체는 존재하나 해당 서버에 클라이언트가 요청한 데이터가 없을 때 나타남, 잘못된 정보를 요청해서 보여줄 게 없음
- 대처방안: 호스팅하고 있는 서비스의 DNS정보가 변경되었는지 확인 필요
503 Service Temporarily Unavalilable
- 서비스를 일시적으로 이용할 수 없습니다라는 뜻
- 너무 많은 트래픽이 일시적으로 몰릴 때 생기는 오류
- 서버에 있는 데이터에는 문제가 없으나 서버 과부하로 인해 서버의 데이터에 접속할 수 없는 상태
- 대처방안: 웹서버 앞단에 로드밸런서를 두어 트래픽 분산
- 대처방안: 웹서버와 애플리케이션 서버 사이의 설정 점검
IT인프라 장애유형 파악 프로세스
장애인지 - 긴급도 및 비즈니스 영향도 판단 - 장애 처리 및 대응 - 이슈 해결 및 보고