티스토리 뷰
1)DB
=> DBMS : 데이터 베이스 관리 시스템 (Database Management System) 데이터베이스를 관리 하는 미들웨어
=> CRUD(Create, Read, Update, Delete)와 같은 기본 기능들과 트랜잭션 처리 등 많은 기능을 포함.
- RDBMS
종류 : Oracle DataBase, MySql, Microsoft SQL Server, PostgreSQL
- NOSQL(Not Only SQL)
종류 : Redis, DynamoDB, MongoDB …
=> key - value 형태이다.
=> document 형태이다.
2)Infra
- application을 가동시키기 위해서 필요한 하드웨어 OS, 미들웨어, 네트워크 등 시스템 기반을 말한다.
- 기능적인 요구사항, 비기능적인 요구사항으로 나뉘고 비기능적인 요구사항이 infra 영역이다.
- 기존 on-premise 방식에서 클라우드 방식으로 변화 하면서, infra 담당자도 자동화 밑 오케스트레이션(orchestration) 을 하기 위해
코드를 작성하기 시작 했다. 또한, application 개발자 또한, 배포나, 테스트를 직접 수행하게 되면서 인프라에 대한 지식이 필요해 짐.
- 인프라구성 요소
[1] 하드웨어(Hardware)
- 서버 장비 본체, 전원, 스토리지 등 물리적으로 구성되는 장치들을 의미 하며, 더 넓게는 건물, 공조, 보안 설비등 까지 포함이 된다.
[2] 네트워크(Network)
- 사용자가 원격으로 접속이 가능하도록 하는 도구.
- 라우터, 스위치, 방화벽 등과 네트워크 케이블 등이 있음.
- 무선 연결에 필요한 Access Point(AP)도 있음.
[3] 운영체제(Operating System)
- 하드웨어(Hardware), 소프트웨어(SoftWare) 관리 및 리소스나 프로세스를 관리 하는 기본적인 소프트웨어.
- client OS(사용자가 사용하기 쉽게 구성 ex: windows, macOS)
- server OS(시스템을 빠르고 안정적으로 실행하는데 초점 ex: Linux,Unix,Windows server...)
[4] 미들웨어(Middle Ware)
- 서버 상에서 서버가 특정 역할을 하도록 기능을 제공.
온프레미스 (On-premises)
퍼블릭 클라우드 (public cloud)
프라이빗 클라우드 (private cloud)
클라우드가 유용한 점
- 사용량이 일정하거나 예측이 쉬운 경우는 온프레미스(On-Premiss) 로 구성해도 좋다.
하지만, 트레픽이 변동량이 많은 시스템일 경우는 오토스케일링(Auto Scaling) 이 가능한 클라우드를 사용 하는 것이 효울 적이다.
- 자연재해나 물리적으로 이슈가 생겼을 때 보통 클라우드 서비스는 분산되어 있기 때문에 시스템이 다운되더라도 빠르게 대응이 가능하다.
온프레미스가 유용한 점
- 가용성이 필요한 시스템에 적합하다. (클라우드서비스가 보장하는 것 이상을 가용성이 필요한 경우)
- 기밀성이 요구되는 경우에도 온프레미스가 유용합니다. (자체 구축을 하기 때문에 보안정책 설정이 용의 하다.)
인프라에서 가장 low-level을 맞고 있는 것이 하드웨어와 네트워크 이다.
CPU
- 코어와 캐시 성능에 많이 영향을 준다.
메모리
- 데이터 용량이 크거나, 전송 속도가 고속일수록 고성능이다.
- 서버용으로는 전력소모가 적고, 오류 처리가 되어 있는 것을 주로 사용 한다.
기타하드웨어
- 전원 차단을 방지하는 무정전 전원공급장치(Uninterruptible Power Supply, (UPS))
- 여러대 서버를 관리 하기위한 KVM 스위치, 장비 설치에 사용하는 server 랙 등이 있다.
3)Security
[1] 방화벽
=> 보안을 위해 내부 네트워크와, 외부 네트워크를 차단 하도록 함.
=> 패킷 필터형 : 통과하는 패킷을 포트 번호나, IP 주소를 바탕으로 필터링 함
=> 어플리케이션 게이트웨이 형 : 애플리케이션 프로토콜 레벨에서 외부와의 통신을 제어 하는 방식으로 프록시 서버라고 하며, 패킷 필터에 비해 속도는 느리지만, 더 많은 검사를 수행 할 수 있다.
4)Storage
[1]데이터 스토리지
=> 데이터를 저장하는 디바이스
=> 스토리지가 가장느리기 때문에 서비스에 영향을 많이 준다 (HDD, SDD 로 구성되어 있음)
=> 데이터 손실을 방지 하기 위해 (High Availability, HA, 오랜시간 지속적으로 운영 될 수 있음) 을 위해 이중화, 다중화로 구성함.
=> AWS RDS 경우 다른 가용 영역에 이중화해서 구성한다. (AWS 에서는 AZ 배포 라고도 한다.)
5)App Dev.
- 웹어플리 케이션 개발
6)Nerwork
- 각종 장비를 구별하기 위해서 주소를 사용하여 구분한다.
- MAC 주소(물리 주소/이더넷 주소)
=> 48bit, 24bit 제조업체에 할당, 24bit 중복되지 않는 값 할당
=> 16진수로 표현하며 2byte씩 구분해서 표현
- IP 주소
=> 인터넷이나 인트라넷 같은 네트워크에 연결된 장비에 할당되는 번호
=> 주로 IPv4의 경우 8bit씩 4개로 구분된 32bit 주소를 사용한다.
=> 다만 IP 고갈 우려에 의해 128bit IPv6를 사용 하고 있다.
=> NAT 장비를 활용 하기도 한다.
- OSI 모델
=> 물리계층(Physical Layer) : 전송 케이블이 직접 연결되는 계층
=> 데이터 링크 계층(Data Link Layer) : 동일한 네트워크 간 인접한 두 시스템(노드)간 통신을 규정한다. (MAC 주소)
=> 네트워크계층(Network Layer) : 서로 다른 네트워크 간 통신을 위한 규정. 라우팅 기능이 있음. 송신자 부터 최종 수신자 까지 안전하게 데이터를 전달하는 것을 담당. 흐름제어 (flow control) 기능과 분실되는 패킷을 감지하고 재전송하는 오류 제어 기능이 있음. (IP 주소)
=> 전송계층(Transport Layer) : 데이터 전송을 제어하는 계층, 전송 오류의 검출이나 재전송을 규정 한다. (TCP / UDP)
=> 세션계층(Session Layer) : 애플리케이션 간 연결을 유지 및 해제하는 역활
=> 프레젠테이션 계층(Presentation Layer) : 데이터를 애플리케이션이 이해할 수 있도록 변환해 주는 역활을 한다. 저장,압축,문자 인코딩을 하며 암호화, 복호화도 담당 하고 있다.
=> 응용 계층(Application Layer) : 최상위 계층, 사용자가 직접 사용하는 애플리케이션을 의미한다.
참고 : https://futurecreator.github.io/2018/11/09/it-infrastructure-basics/
- Total
- Today
- Yesterday
- data mining
- 테스트주도개발
- nodejs
- MSA
- mongodb
- data crawling
- TDD
- Python #FastAPI
- SpringBoot
- 테스트 주도 개발
- 웹서비스
- fastapi
- 테스트
- 분산처리
- MQ
- EC2
- GateWayApi
- AWS
- 켄트 백
- 웹개발
- 퀜트백
- Python
- kafka
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |