1. 서버
1.1 서버와 클라이이언트
서버 : 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 장치(컴퓨터)
클라이언트 : 네트워크를 통해 서버에게 접속해 정보를 확인하거나 서비스를 이용하는 장치
1.1.1 웹 어플리케이션을 구성하는 서버의 종류
- 웹서버(Web server) : 정적콘텐츠(소스코드, 텍스트, 이미지 등)을 클라이언트에게 전달
- 웹 애플리케이션 서버(Web Application Server) : 동적 컨텐츠를 클라이언트에게 전달
- 데이터베이스 서버(DB Server) : 애플리케이션의 정보를 저장하여 운영, 관리하는 데이터베이스를 구동하는 서버
- 리버스 프록시 서버(Reverse Proxy Server) : 클라이언트의 요청을 처리할 수 있는 애플리케이션 서버 선택후 전달
- 포워드 프록시(캐시) 서버 : 미리 데이터를 저장해 뒀다가 요청이 오면 데이터 전달
1.2 서버 하드웨어와 소프트웨어
1.2.1 서버 하드웨어
1.2.2 서버 소프트웨어
- UNIX : 독점 OS
- LINUX : 오픈소스 무료 OS
- 무료 LINUX: debian, ubuntu, CentOS
- 상용 LINUX: Red Hat, SUSE
- Web Server : Apache, NGINX
- WAS : Tomcat, WildFly, JEUS
- 파일서버 : Filezilla...
- 메일서버: Exchange...
2. 네트워크
Network = Net + Work : 그물처럼 연결된 상태
3. 스토리지
- 스토리지 : 저장장치를 다수 장착한 대용량 고속 저장 장비로 서버와 클라이언트에서 네트워크로 연결해서 사용
- 스토리지는 데이터 저장뿐만 아니라 데이터 공유 목적으로 주로 사용됨
- 서버에 장착된 디스크 용량이 부족할 경우, 다수의 사람들과 데이터를 공유할 필요가 있을 경우 스토리지 활용
- 데이터 관리 및 보호를 위한 별도의 소프트웨어 탑재
- 스토리지 데이터 저장방식 : 여러개의 디스크 중 일부에 데이터를 중복저장하여 복구를 원활히 함
- RAID 0 ...
- 유형 : 파일스토리지, 블록스토리지, 오브젝트 스토리지(aws s3..)
- 저장장치 : 컴퓨터의 데이터를 저장하기 위한 비휘발성 기억장치
3.1 백업
백업 : 데이터를 임시로 다른 장치에 저장하여 문제가 있을 때 복구할 수 있도록 준비해 두는 것
- Full Backup : 백업 주기마다 데이터 전체를 백업
- Incremental Backup : 첫날 데이터 전체를 백업하고, 그 후 증가된 데이터만 백업
스냅샷 : 사진찍듯이 특정 시점에 스토리지 파일 시스템을 포작해 보관하는 기술
4. 데이터베이스
데이터베이스 : 여러 사람이 공유하여 공유할 목적으로 체계화해 통합 관리하는 데이터들의 집합
DBMS(DB Management System) : 사용자들이 DB안 데이터를 접근할 수 있도록 해주는 SW
- 관계형 DBMS(Relational DBMS): 테이블이라는 퇴소 단위로 구성하여 열과 행으로 이루어짐
- SQL : 구조적 데이터 질의 언어, DB의 데이터를 조회하기 위한 언어
- 오픈소스 : Mysql, PostgreSQL, MariaDB
- 상용 : Oracle Database, Microsoft SQLServer...
- NoSQL : 대용량 데이터를 분산 처리하기 위한, SQL이 아닌 다른 기술을 채택한 오픈소스 DB
DB IDE : DB 개발 도구
5. 온프레미스
온프레미스 : 기업이 자체 시설에서 보유하고 직접 유지관리하는 프라이빗 데이터센터
3 Tier 아키텍쳐 : 서버, 네트워크, 스토리지로 구성된 전통적인 아키텍쳐
5.1 IT인프라 가상화 기술
가상화 : 물리적인 하드웨어가 보유한 자원 효율성을 향상 시키기 위해 사용하는 기술
- 서버 가상화 : 하이퍼바이저를 통해 가상머신을 생성 여러개의 OS을 운영하는 기술
- 데스크탑 가상화 : 데이터는 서버에 저장하고 서버에서 클라이언트 업무 환경만 제공해 주는 기술
- 네트워크 가상화 : 다수의 물리적 네트워크를 하나의 가상 네트워크로 구성해 사용하는 기술
- 스토리지 가상화: 물리서버의 디스크와 스토리지를 하나의 가상 스토리지 풀로 묶어 사용하는 기술
HCI : 컴퓨팅, 스토리지, 네트워크를 가상화시켜 단일 시스템으로 운영
SDDC : 데이터 센터 구성 요소의 모든것을 소프트웨어로 통합 관리
6. 클라우드
클라우드 : IT인프라 자원을 빌려서 쓰는 것
- 호스팅 : IDC의 특정 서버 자원을 빌려 씀
- 서버 호스팅 : IDC의 특정 서버 자체를 빌려씀
- 클라우드 : IDC의 특정 서버 혹은 서버 자체를 빌려쓸 수 있고 혼합가능
6.1 종류
- IaaS(Infra as a Service) : IT인프라 자원 전체를 빌려다 씀, OS 및 각종 소프트웨어 설치 필요
- AWS, Azure, GCP..
- PaaS(Platform as a Service) : 이미 설치된 IS을 빌려다 씀
- AWS Elastic Beanstalk, Azure SQL DB,...
- SaaS(Software as a Service) : 소프트웨어를 빌려다 씀
- Microsoft 365, Zoom, Google Workspace..
6.2 클라우드 형태
- 온프레미스 : 기업이 직접 IT인프라를 운영
- 퍼블릭 클라우드 : 다른 기업의 IT인프라를 빌려다 씀
- 프라이빗 클라우드 : 기업이 보유한 IT인프라를 클라우드 서비스처럼 기업 내에서 활용
- 하이브리드 클라우드 : 프라이빗 클라우드 + 퍼블릭 클라우드
- 멀티 클라우드 : 퍼블릭 클라우드 + 퍼블릭 클라우드
6.3 컨테이터
컨테이너 : 리눅스 기반 애플리케이션 운영을 위한 프로세스 격리 기술
컨테이너 런타임 : 컨테이너를 다루는 기술
도커(Docker) : 컨테이터 기술을 누구나 쉽게 사용할 수 있도록 만든 컨테이너 런타임 중 가장 유명한 오픈소스 프로젝트
컨테이터 vs 가상머신 : 컨테이너는 앱 별로 가상화 vs VM은 OS별로 가상화
6.4 쿠버네티스
쿠버네티스 : 다수의 컨테이너를 효율적으로 운영, 관리하기 위한 도구, 구글이 오픈소스로 공개, 유로서비스도 있음
- 파드(Pod) : 앱이 운영되는 컨테이너들의 모음, 그룹
- 노드(Node) : 파드가 운영되는 물리 서버 또는 가상 머신, 워커노드라고도 부름
- 클러스터(Cluster) : 노드들의 집합
- 마스터(Master) : 다수의 워커 노드들 및 그 하위의 파드와 컨테이너를 관리하는 노드
7. 개발 모델 및 방법론
7.1 개발 모델
- 모놀리식 아키텍쳐 : 애플리케이션 계획, 설계, 개발 테스트, 배포 모든 과정을 한번에 수행하는 모델
- 마이크로서비스 아키텍쳐 : 애플리케이션의 각 요소(기능) 별로 계획, 설계, 개발, 테스트, 배포하는 모델
7.2 개발 방법론
- 워터폴 : 요구사항 정의 > 디자인 > 개발 > 테스트 > 배포 과정이 순차적으로 진행됨
- 애자일 : 변화하는 고객의 요구 사항에 빠르게 대응하기 위한 개발 방식으로, 작은 단위로 디자인 > 개발 > 테스트 반복
- DevOps : 개발 및 테스트부터 배포 및 운영까지 업무를 통합해서 앱 개발 및 배포 속도를 높이려는 접근방식
- CI/CD : 연속적인 통합, 연속적인 배포, 개발 ~ 배포를 자동화하여 보다 짧은 주기로 애플리케이션을 제공하는 방법론
- 지원하는 서비스 : AWS CodePipeline, AWS CodeBuild, AWS CodeDeploy, AWS CodeStar, Azure,..
'KT에이블스쿨' 카테고리의 다른 글
[KT에이블스쿨] 7주 (0) | 2024.04.07 |
---|---|
[KT에이블스쿨] 4주 (0) | 2024.03.31 |
[KT에이블스쿨] 5주, 6주 (0) | 2024.03.31 |