이 리포지토리에는 DevOps 및 SRE와 관련된 다양한 기술 주제에 대한 질문과 연습이 포함되어 있습니다.
현재 2624개의 연습문제와 문제가 있습니다.
️ 인터뷰 준비를 위해 이를 사용할 수 있지만 대부분의 질문과 연습은 실제 인터뷰를 나타내지 않습니다. 자세한 내용은 FAQ 페이지를 읽어보세요.
? DevOps 엔지니어로서의 경력을 쌓는 데 관심이 있다면 여기에 언급된 개념 중 일부를 배우는 것이 유용할 것입니다. 그러나 이것이 이 저장소에 언급된 모든 주제와 기술을 배우는 것이 아니라는 점을 알아야 합니다.
끌어오기 요청을 제출하여 더 많은 연습을 추가할 수 있습니다. 여기에서 기여 지침을 읽어보세요.
데브옵스 | 힘내 | 회로망 | 하드웨어 | 쿠버네티스 |
소프트웨어 개발 | 파이썬 | 가다 | 펄 | 정규식 |
구름 | AWS | 하늘빛 | 구글 클라우드 플랫폼 | 오픈스택 |
운영 체제 | 리눅스 | 가상화 | DNS | 쉘 스크립팅 |
데이터베이스 | SQL | 몽고 | 테스트 | 빅데이터 |
CI/CD | 인증서 | 컨테이너 | 오픈시프트 | 저장 |
테라폼 | 인형 | 분산 | 질문할 수 있는 질문 | 앤서블 |
관찰 가능성 | 프로메테우스 | 서클CI |
| 그라파나 |
아르고 | 소프트 스킬 | 보안 | 시스템 설계 |
카오스엔지니어링 | 기타 | 탄력 있는 | 카프카 | NodeJ |
회로망
일반적으로 의사소통을 위해서는 무엇이 필요합니까?
- 공통 언어(양쪽 끝이 이해할 수 있도록)
A 연결 - 과 통신하려는 사람을 지정하는 방법
- (통신 내용이 수신자에게 전달될 수 있도록)
TCP/IP란 무엇입니까?
둘 이상의 장치가 서로 통신할 수 있는 방법을 정의하는 프로토콜 집합입니다.
TCP/IP에 대해 자세히 알아보려면 여기를 읽어보세요.
이더넷이란 무엇입니까?
이더넷은 오늘날 사용되는 가장 일반적인 유형의 근거리 통신망(LAN)을 가리킵니다. 더 넓은 지리적 영역에 걸쳐 있는 WAN(Wide Area Network)과 달리 LAN은 사무실, 대학 캠퍼스 또는 집과 같은 작은 영역에 있는 컴퓨터가 연결된 네트워크입니다.
MAC 주소란 무엇입니까? 그것은 무엇을 위해 사용됩니까?
MAC 주소는 네트워크에서 개별 장치를 식별하는 데 사용되는 고유 식별 번호 또는 코드입니다.
이더넷에서 전송되는 패킷은 항상 MAC 주소에서 나오고 MAC 주소로 전송됩니다. 네트워크 어댑터가 패킷을 수신하는 경우 패킷의 대상 MAC 주소를 어댑터의 자체 MAC 주소와 비교합니다.
이 MAC 주소는 언제 사용됩니까?: ff:ff:ff:ff:ff:ff
장치가 브로드캐스트 MAC 주소(FF:FF:FF:FF:FF:FF)로 패킷을 보내면 로컬 네트워크의 모든 스테이션에 전달됩니다. 이더넷 브로드캐스트는 데이터 링크 계층에서 IP 주소를 MAC 주소(ARP를 통해)로 확인하는 데 사용됩니다.
IP 주소란 무엇입니까?
인터넷 프로토콜 주소(IP 주소)는 통신을 위해 인터넷 프로토콜을 사용하는 컴퓨터 네트워크에 연결된 각 장치에 할당된 숫자 레이블입니다. IP 주소는 호스트 또는 네트워크 인터페이스 식별과 위치 주소 지정이라는 두 가지 주요 기능을 제공합니다.
서브넷 마스크에 대해 설명하고 예를 들어보세요.
서브넷 마스크는 IP 주소를 마스크하고 IP 주소를 네트워크 주소와 호스트 주소로 나누는 32비트 숫자입니다. 서브넷 마스크는 네트워크 비트를 모두 "1"로 설정하고 호스트 비트를 모두 "0"으로 설정하여 만듭니다. 주어진 네트워크 내에서 사용 가능한 총 호스트 주소 중 두 개는 항상 특정 목적을 위해 예약되어 있으며 어떤 호스트에도 할당될 수 없습니다. 이는 네트워크 주소(네트워크 ID라고도 함)로 예약된 첫 번째 주소이자 네트워크 브로드캐스트에 사용되는 마지막 주소입니다.
예
개인 IP 주소란 무엇입니까? 어떤 시나리오/시스템 설계에서 사용해야 합니까?
동일한 네트워크에 있는 호스트들에게는 개인 IP 주소가 할당되어 서로 통신합니다. "개인"이라는 이름에서 알 수 있듯이 개인 IP 주소가 할당된 장치는 외부 네트워크의 장치에서 접근할 수 없습니다. 예를 들어, 내가 호스텔에 살고 있고 내 호스텔 동료가 내가 호스팅한 게임 서버에 참여하기를 원할 경우 네트워크가 호스텔에 로컬이므로 내 서버의 개인 IP 주소를 통해 참여하도록 요청할 것입니다. 공용 IP 주소란 무엇입니까? 어떤 시나리오/시스템 설계에서 사용해야 합니까?
공용 IP 주소는 공용 IP 주소입니다. 친구가 가입하기를 원하는 게임 서버를 호스팅하는 경우, 친구의 컴퓨터가 연결이 이루어지도록 네트워크와 서버를 식별하고 찾을 수 있도록 공용 IP 주소를 친구에게 제공합니다. 공용 IP 주소를 사용할 필요가 없는 경우는 동일한 네트워크에 연결된 친구들과 플레이하는 경우이며, 이 경우 개인 IP 주소를 사용하게 됩니다. 누군가 내부에 있는 서버에 연결할 수 있으려면 공용 도메인에서 네트워크로 또는 그 반대로 트래픽을 허용하도록 라우터에 지시하는 포트 전달을 설정해야 합니다. OSI 모델을 설명해보세요. 어떤 레이어가 있나요? 각 레이어는 어떤 역할을 담당하나요?
- 애플리케이션: 사용자 측(HTTP가 여기에 있음)
- 프리젠테이션: 애플리케이션 계층 엔터티 간의 컨텍스트 설정(암호화가 여기에 있음)
- 세션: 연결 설정, 관리 및 종료
- 전송: 소스에서 대상 호스트(TCP)로 가변 길이 데이터 시퀀스 전송 & UDP가 여기에 있음)
- 네트워크: 한 네트워크에서 다른 네트워크로 데이터그램을 전송합니다(IP가 여기에 있음)
- 데이터 링크: 직접 연결된 두 노드 사이의 링크를 제공합니다(MAC가 여기에 있음)
- 물리적: 데이터 연결의 전기적 및 물리적 사양(비트가 여기에 있음) )
Penguintutor.com에서 OSI 모델에 대한 자세한 내용을 읽을 수 있습니다.
다음 각각에 대해 해당 OSI 계층이 속하는지 결정합니다.- 오류 수정
- 패킷 라우팅
- 케이블 및 전기 신호
- MAC 주소
- IP 주소
- 연결 종료
- 3방향 악수
오류 수정 - 데이터 링크 패킷 라우팅 - 네트워크 케이블 및 전기 신호 - 물리적 MAC 주소 - 데이터 링크 IP 주소 - 네트워크 연결 종료 - 세션 3방향 핸드셰이크 - 전송 어떤 배송 방식을 알고 계시나요?
유니캐스트(Unicast): 송신자 1명과 수신자 1명이 있는 일대일 통신입니다.
브로드캐스트: 네트워크의 모든 사람에게 메시지를 보냅니다. ff:ff:ff:ff:ff:ff 주소는 방송에 사용됩니다. 브로드캐스트를 사용하는 두 가지 일반적인 프로토콜은 ARP와 DHCP입니다.
멀티캐스트: 가입자 그룹에게 메시지를 보냅니다. 일대다 또는 다대다일 수 있습니다.
CSMA/CD란 무엇입니까? 최신 이더넷 네트워크에서 사용됩니까?
CSMA/CD는 캐리어 감지 다중 액세스/충돌 감지를 나타냅니다. 주요 초점은 특정 시점에 하나의 호스트만 전송할 수 있는 공유 매체/버스에 대한 액세스를 관리하는 것입니다.
CSMA/CD 알고리즘:
프레임을 보내기 전에 다른 호스트가 이미 프레임을 전송하고 있는지 확인합니다.- 아무도 전송하지 않으면 프레임 전송을 시작합니다.
- 두 호스트가 동시에 전송하면 충돌이 발생합니다.
- 두 호스트 모두 프레임 전송을 중단하고 모든 사람에게 충돌이 발생했음을 알리는 '잼 신호'를 보냅니다.
- 다시 보내기 전에 임의의 시간을 기다리고 있습니다.
- 각 호스트가 임의의 시간 동안 기다린 후에는 프레임을 다시 보내려고 시도하므로 주기가 다시 시작됩니다.
다음 네트워크 장치와 그 차이점을 설명하십시오.
라우터, 스위치, 허브는 모두 LAN(Local Area Network)에서 장치를 연결하는 데 사용되는 네트워크 장치입니다. 그러나 각 장치는 다르게 작동하며 특정 사용 사례가 있습니다. 각 장치에 대한 간략한 설명과 차이점은 다음과 같습니다.
라우터: 여러 네트워크 세그먼트를 함께 연결하는 네트워크 장치입니다. OSI 모델의 네트워크 계층(3계층)에서 작동하며 라우팅 프로토콜을 사용하여 네트워크 간에 데이터를 전달합니다. 라우터는 IP 주소를 사용하여 장치를 식별하고 데이터 패킷을 올바른 대상으로 라우팅합니다.- 스위치: LAN의 여러 장치를 연결하는 네트워크 장치입니다. 이는 OSI 모델의 데이터 링크 계층(계층 2)에서 작동하며 MAC 주소를 사용하여 장치를 식별하고 데이터 패킷을 올바른 대상으로 전달합니다. 스위치를 사용하면 동일한 네트워크에 있는 장치가 서로 더 효율적으로 통신할 수 있으며 여러 장치가 동시에 데이터를 보낼 때 발생할 수 있는 데이터 충돌을 방지할 수 있습니다.
- 허브(Hub): 여러 장치를 하나의 케이블로 연결하는 네트워크 장치로, 네트워크를 분할하지 않고 여러 장치를 연결하는 데 사용됩니다. 그러나 스위치와는 달리 OSI 모델의 물리 계층(계층 1)에서 작동하며 장치가 의도된 수신자인지 여부에 관계없이 연결된 모든 장치에 데이터 패킷을 단순히 브로드캐스트합니다. 이는 데이터 충돌이 발생할 수 있으며 결과적으로 네트워크 효율성이 저하될 수 있음을 의미합니다. 스위치가 더 효율적이고 더 나은 네트워크 성능을 제공하기 때문에 허브는 일반적으로 최신 네트워크 설정에 사용되지 않습니다.
"충돌 도메인"이란 무엇입니까?
충돌 도메인은 장치가 동시에 데이터 전송을 시도하여 잠재적으로 서로 간섭할 수 있는 네트워크 세그먼트입니다. 두 장치가 동시에 데이터를 전송하면 충돌이 발생하여 데이터가 손실되거나 손상될 수 있습니다. 충돌 도메인에서는 모든 장치가 동일한 대역폭을 공유하며 모든 장치는 잠재적으로 다른 장치의 데이터 전송을 방해할 수 있습니다. "브로드캐스트 도메인"이란 무엇입니까?
브로드캐스트 도메인은 모든 장치가 브로드캐스트 메시지를 전송하여 서로 통신할 수 있는 네트워크 세그먼트입니다. 브로드캐스트 메시지는 특정 장치가 아닌 네트워크 내 모든 장치에 전송되는 메시지입니다. 브로드캐스트 도메인에서는 메시지가 의도된 것인지 여부에 관계없이 모든 장치가 브로드캐스트 메시지를 수신하고 처리할 수 있습니다. 스위치에 연결된 세 대의 컴퓨터. 충돌 영역은 몇 개입니까? 브로드캐스트 도메인은 몇 개입니까?
3개의 충돌 도메인과 1개의 브로드캐스트 도메인
라우터는 어떻게 작동하나요?
라우터는 둘 이상의 패킷 교환 컴퓨터 네트워크 간에 정보를 전달하는 물리적 또는 가상 장비입니다. 라우터는 지정된 데이터 패킷의 대상 인터넷 프로토콜 주소(IP 주소)를 검사하고 대상에 도달하는 가장 좋은 방법을 계산한 다음 그에 따라 전달합니다.
NAT란 무엇입니까?
NAT(Network Address Translation)는 로컬 호스트에 인터넷 액세스를 제공하기 위해 하나 이상의 로컬 IP 주소를 하나 이상의 글로벌 IP 주소로 또는 그 반대로 변환하는 프로세스입니다.
프록시란 무엇입니까? 어떻게 작동하나요? 왜 필요한가요?
프록시 서버는 사용자와 인터넷 사이의 게이트웨이 역할을 합니다. 이는 최종 사용자를 그들이 탐색하는 웹사이트로부터 분리하는 중개 서버입니다.
프록시 서버를 사용하는 경우 인터넷 트래픽은 프록시 서버를 통해 요청한 주소로 이동합니다. 그런 다음 요청은 동일한 프록시 서버를 통해 다시 들어오고(이 규칙에는 예외가 있음) 프록시 서버가 웹 사이트에서 받은 데이터를 사용자에게 전달합니다.
프록시 서버는 사용 사례, 요구 사항 또는 회사 정책에 따라 다양한 수준의 기능, 보안 및 개인 정보 보호를 제공합니다.
TCP란 무엇입니까? 어떻게 작동하나요? 3방향 핸드셰이크란 무엇입니까?
TCP 3-way handshake 또는 3-way handshake는 TCP/IP 네트워크에서 서버와 클라이언트를 연결하는 데 사용되는 프로세스입니다.
3방향 핸드셰이크는 주로 TCP 소켓 연결을 생성하는 데 사용됩니다. 다음과 같은 경우에 작동합니다.
클라이언트 노드는 IP 네트워크를 통해 동일한 네트워크 또는 외부 네트워크에 있는 서버로 SYN 데이터 패킷을 보냅니다. 이 패킷의 목적은 서버가 새로운 연결을 위해 열려 있는지 묻거나 추론하는 것입니다.- 대상 서버에는 새 연결을 수락하고 시작할 수 있는 열린 포트가 있어야 합니다. 서버가 클라이언트 노드로부터 SYN 패킷을 수신하면 응답하고 확인 영수증(ACK 패킷 또는 SYN/ACK 패킷)을 반환합니다.
- 클라이언트 노드는 서버로부터 SYN/ACK를 수신하고 ACK 패킷으로 응답합니다.
왕복 지연 또는 왕복 시간이란 무엇입니까?
Wikipedia에서: "신호를 보내는 데 걸리는 시간과 해당 신호를 수신하는 데 걸리는 시간을 더한 것"
보너스 질문: LAN의 RTT는 무엇입니까?
SSL 핸드셰이크는 어떻게 작동하나요?
SSL 핸드셰이크는 클라이언트와 서버 간에 보안 연결을 설정하는 프로세스입니다. 클라이언트는 SSL/TLS 프로토콜의 클라이언트 버전, 클라이언트가 지원하는 암호화 알고리즘 목록 및 임의의 값을 포함하는 클라이언트 Hello 메시지를 서버에 보냅니다.- 서버는 SSL/TLS 프로토콜의 서버 버전, 임의의 값 및 세션 ID를 포함하는 Server Hello 메시지로 응답합니다.
- 서버는 서버의 인증서가 포함된 인증서 메시지를 보냅니다.
- 서버는 Server Hello 완료 메시지를 보냅니다. 이는 서버가 Server Hello 단계에 대한 메시지 전송을 완료했음을 나타냅니다.
- 클라이언트는 클라이언트의 공개 키가 포함된 클라이언트 키 교환 메시지를 보냅니다.
- 클라이언트는 클라이언트가 새 암호 사양으로 암호화된 메시지를 보내려고 함을 서버에 알리는 Change Cipher Spec 메시지를 보냅니다.
- 클라이언트는 서버의 공개 키로 암호화된 사전 마스터 비밀이 포함된 암호화된 핸드셰이크 메시지를 보냅니다.
- 서버는 Change Cipher Spec 메시지를 보냅니다. 이 메시지는 서버가 새로운 암호 사양으로 암호화된 메시지를 보내려고 함을 클라이언트에 알립니다.
- 서버는 클라이언트의 공개 키로 암호화된 사전 마스터 비밀이 포함된 암호화된 핸드셰이크 메시지를 보냅니다.
- 이제 클라이언트와 서버는 애플리케이션 데이터를 교환할 수 있습니다.
TCP와 UDP의 차이점은 무엇입니까?
TCP는 클라이언트와 서버 사이에 연결을 설정하여 패키지 순서를 보장하는 반면, UDP는 클라이언트와 서버 사이에 연결을 설정하지 않으며 패키지 주문을 처리하지 않습니다. 이로 인해 UDP는 TCP보다 더 가볍고 스트리밍과 같은 서비스에 대한 완벽한 후보가 됩니다.
Penguintutor.com에서 좋은 설명을 제공합니다.
어떤 TCP/IP 프로토콜에 익숙합니까?
"기본 게이트웨이"에 대해 설명하세요.
기본 게이트웨이는 네트워크로 연결된 컴퓨터가 다른 네트워크나 인터넷에 있는 컴퓨터로 정보를 보내는 데 사용하는 액세스 포인트 또는 IP 라우터 역할을 합니다.
ARP란 무엇입니까? 어떻게 작동하나요?
ARP는 주소 확인 프로토콜을 나타냅니다. 로컬 네트워크의 IP 주소(예: 192.168.1.1)에 ping을 시도할 때 시스템은 IP 주소 192.168.1.1을 MAC 주소로 바꿔야 합니다. 여기에는 ARP를 사용하여 주소를 확인하는 작업이 포함되므로 이름이 지정됩니다.
시스템은 어떤 IP 주소가 어떤 MAC 주소와 연관되어 있는지에 대한 정보를 저장하는 ARP 조회 테이블을 유지합니다. IP 주소로 패킷을 보내려고 할 때 시스템은 먼저 이 표를 참조하여 MAC 주소를 이미 알고 있는지 확인합니다. 캐시된 값이 있으면 ARP는 사용되지 않습니다.
TTL이란 무엇입니까? 예방하는데 어떤 도움이 되나요?
TTL(Time to Live)은 패킷이 삭제되기 전에 패킷이 이동할 수 있는 홉 또는 라우터 수를 결정하는 IP(인터넷 프로토콜) 패킷의 값입니다. 라우터가 패킷을 전달할 때마다 TTL 값은 1씩 감소합니다. TTL 값이 0에 도달하면 패킷이 삭제되고 패킷이 만료되었음을 알리는 ICMP(인터넷 제어 메시지 프로토콜) 메시지가 보낸 사람에게 다시 전송됩니다.- TTL은 네트워크에서 패킷이 무기한 순환하여 정체를 유발하고 네트워크 성능을 저하시키는 것을 방지하는 데 사용됩니다.
- 또한 패킷이 목적지에 도달하지 못한 채 동일한 라우터 집합 간에 계속 이동하는 라우팅 루프에 패킷이 갇히는 것을 방지하는 데도 도움이 됩니다.
- 또한 TTL을 사용하면 공격자가 거짓 또는 가짜 IP 주소를 사용하여 네트워크에서 다른 장치를 가장하려고 시도하는 IP 스푸핑 공격을 탐지하고 예방할 수 있습니다. 패킷이 이동할 수 있는 홉 수를 제한함으로써 TTL은 패킷이 합법적이지 않은 대상으로 라우팅되는 것을 방지하는 데 도움이 될 수 있습니다.
DHCP란 무엇입니까? 어떻게 작동하나요?
이는 동적 호스트 구성 프로토콜(Dynamic Host Configuration Protocol)을 나타내며 IP 주소, 서브넷 마스크 및 게이트웨이를 호스트에 할당합니다. 작동 방식은 다음과 같습니다.
- 네트워크에 진입한 호스트는 DHCP 서버를 찾아 메시지를 브로드캐스트합니다(DHCP DISCOVER).
- Offer 메시지는 임대 시간, 서브넷 마스크, IP 주소 등이 포함된 패킷으로 DHCP 서버에서 다시 전송됩니다(DHCP OFFER).
- 어떤 제안이 수락되었는지에 따라 클라이언트는 모든 DHCP 서버에 알릴 수 있는 응답 브로드캐스트를 다시 보냅니다(DHCP REQUEST).
- 서버가 승인(DHCP ACK)을 보냅니다.
여기서 더 읽어보세요
동일한 네트워크에 두 개의 DHCP 서버를 가질 수 있습니까? 어떻게 작동하나요?
동일한 네트워크에 두 개의 DHCP 서버가 있을 수 있지만 권장되지 않으며 충돌 및 구성 문제를 방지하려면 신중하게 구성하는 것이 중요합니다.
두 개의 DHCP 서버가 동일한 네트워크에 구성된 경우 두 서버 모두 IP 주소 및 기타 네트워크 구성 설정을 동일한 장치에 할당하여 충돌 및 연결 문제를 일으킬 위험이 있습니다. 또한 DHCP 서버가 다른 네트워크 설정이나 옵션으로 구성된 경우 네트워크의 장치는 충돌하거나 일관되지 않은 구성 설정을 받을 수 있습니다.- 그러나 어떤 경우에는 하나의 DHCP 서버가 모든 요청을 처리할 수 없는 대규모 네트워크와 같이 동일한 네트워크에 두 개의 DHCP 서버가 필요할 수도 있습니다. 이러한 경우 서로 다른 IP 주소 범위 또는 서로 다른 서브넷을 제공하도록 DHCP 서버를 구성하여 서로 간섭하지 않도록 할 수 있습니다.
SSL 터널링이란 무엇입니까? 어떻게 작동하나요?
- SSL(Secure Sockets Layer) 터널링은 인터넷과 같은 안전하지 않은 네트워크를 통해 두 엔드포인트 간에 암호화된 보안 연결을 설정하는 데 사용되는 기술입니다. SSL 터널은 기밀성, 무결성 및 인증을 제공하는 SSL 연결 내에서 트래픽을 캡슐화하여 생성됩니다.
SSL 터널링의 작동 방식은 다음과 같습니다.
클라이언트는 SSL 세션을 설정하기 위한 핸드셰이크 프로세스를 포함하는 서버에 대한 SSL 연결을 시작합니다.- SSL 세션이 설정되면 클라이언트와 서버는 암호화 알고리즘 및 키 길이와 같은 암호화 매개변수를 협상한 다음 디지털 인증서를 교환하여 서로를 인증합니다.
- 그런 다음 클라이언트는 SSL 터널을 통해 서버로 트래픽을 보내고, 서버는 트래픽을 해독하여 대상으로 전달합니다.
- 서버는 SSL 터널을 통해 클라이언트로 트래픽을 다시 전송하고, 클라이언트는 트래픽을 해독하여 애플리케이션으로 전달합니다.
소켓이란 무엇입니까? 시스템의 소켓 목록은 어디에서 볼 수 있나요?
소켓은 네트워크를 통한 프로세스 간 양방향 통신을 가능하게 하는 소프트웨어 엔드포인트입니다. 소켓은 네트워크 통신을 위한 표준화된 인터페이스를 제공하여 애플리케이션이 네트워크를 통해 데이터를 보내고 받을 수 있도록 합니다. Linux 시스템에서 열린 소켓 목록을 보려면: netstat -an- 이 명령은 프로토콜, 로컬 주소, 외부 주소 및 상태와 함께 열려 있는 모든 소켓 목록을 표시합니다.
IPv6란 무엇입니까? IPv4가 있는데 왜 사용을 고려해야 합니까?
- IPv6(인터넷 프로토콜 버전 6)은 네트워크의 장치를 식별하고 통신하는 데 사용되는 최신 버전의 IP(인터넷 프로토콜)입니다. IPv6 주소는 128비트 주소이며 2001:0db8:85a3:0000:0000:8a2e:0370:7334와 같이 16진수 표기법으로 표현됩니다.
IPv4 대신 IPv6 사용을 고려해야 하는 몇 가지 이유가 있습니다.
주소 공간: IPv4에는 제한된 주소 공간이 있으며 이는 전 세계 여러 지역에서 고갈되었습니다. IPv6은 훨씬 더 큰 주소 공간을 제공하여 수조 개의 고유한 IP 주소를 허용합니다.- 보안: IPv6에는 네트워크 트래픽에 대한 종단 간 암호화 및 인증을 제공하는 IPsec에 대한 지원이 내장되어 있습니다.
- 성능: IPv6에는 단일 패킷을 여러 대상으로 동시에 전송할 수 있는 멀티캐스트 라우팅과 같이 네트워크 성능을 향상시키는 데 도움이 되는 기능이 포함되어 있습니다.
- 단순화된 네트워크 구성: IPv6에는 상태 비저장 자동 구성과 같이 네트워크 구성을 단순화할 수 있는 기능이 포함되어 있습니다. 이를 통해 장치는 DHCP 서버 없이도 자체 IPv6 주소를 자동으로 구성할 수 있습니다.
- 향상된 이동성 지원: IPv6에는 장치가 서로 다른 네트워크 간에 이동할 때 IPv6 주소를 유지할 수 있도록 하는 모바일 IPv6와 같은 이동성 지원을 향상시킬 수 있는 기능이 포함되어 있습니다.
VLAN이란 무엇입니까?
- VLAN(Virtual Local Area Network)은 물리적 위치에 관계없이 물리적 네트워크의 장치 세트를 그룹화하는 논리적 네트워크입니다. VLAN은 스위치의 특정 포트 또는 포트 그룹에 연결된 장치가 보낸 프레임에 특정 VLAN ID를 할당하도록 네트워크 스위치를 구성하여 생성됩니다.
MTU란 무엇입니까?
MTU는 최대 전송 단위를 나타냅니다. 단일 트랜잭션으로 전송할 수 있는 가장 큰 PDU(프로토콜 데이터 단위)의 크기입니다.
MTU보다 큰 패킷을 보내면 어떻게 되나요?
IPv4 프로토콜을 사용하면 라우터는 PDU를 조각화한 다음 트랜잭션을 통해 조각화된 모든 PDU를 보낼 수 있습니다.
IPv6 프로토콜을 사용하면 사용자 컴퓨터에 오류가 발생합니다.
참인가 거짓인가? Ping은 안정적인 연결에 신경 쓰지 않기 때문에 UDP를 사용하고 있습니다.
거짓. Ping은 실제로 네트워크 통신과 관련된 진단 메시지 및 제어 메시지를 보내는 데 사용되는 네트워크 프로토콜인 ICMP(인터넷 제어 메시지 프로토콜)를 사용합니다.
SDN이란 무엇입니까?
SDN은 소프트웨어 정의 네트워킹을 의미합니다. 이는 네트워크 제어의 중앙 집중화를 강조하여 관리자가 소프트웨어 추상화를 통해 네트워크 동작을 관리할 수 있도록 하는 네트워크 관리에 대한 접근 방식입니다.- 기존 네트워크에서는 라우터, 스위치, 방화벽과 같은 네트워크 장치가 특수 소프트웨어나 명령줄 인터페이스를 사용하여 개별적으로 구성되고 관리됩니다. 이와 대조적으로 SDN은 네트워크 제어 평면을 데이터 평면에서 분리하므로 관리자는 중앙 집중식 소프트웨어 컨트롤러를 통해 네트워크 동작을 관리할 수 있습니다.
ICMP란 무엇입니까? 그것은 무엇을 위해 사용됩니까?
- ICMP는 인터넷 제어 메시지 프로토콜을 나타냅니다. IP 네트워크에서 진단 및 제어 목적으로 사용되는 프로토콜입니다. 이는 네트워크 계층에서 작동하는 인터넷 프로토콜 제품군의 일부입니다.
ICMP 메시지는 다음을 포함한 다양한 목적으로 사용됩니다.
오류 보고: ICMP 메시지는 대상으로 배달할 수 없는 패킷과 같이 네트워크에서 발생하는 오류를 보고하는 데 사용됩니다.- Ping: ICMP는 호스트나 네트워크에 연결할 수 있는지 테스트하고 패킷의 왕복 시간을 측정하는 데 사용되는 ping 메시지를 보내는 데 사용됩니다.
- 경로 MTU 검색: ICMP는 조각화 없이 전송할 수 있는 최대 패킷 크기인 경로의 MTU(최대 전송 단위)를 검색하는 데 사용됩니다.
- Traceroute: ICMP는 Traceroute 유틸리티에서 패킷이 네트워크를 통과하는 경로를 추적하는 데 사용됩니다.
- 라우터 검색: ICMP는 네트워크에서 라우터를 검색하는 데 사용됩니다.
NAT란 무엇입니까? 어떻게 작동하나요?
NAT는 네트워크 주소 변환을 의미합니다. 이는 정보를 전송하기 전에 여러 로컬 개인 주소를 공개 주소로 매핑하는 방법입니다. 여러 장치가 단일 IP 주소를 사용하기를 원하는 조직은 대부분의 홈 라우터와 마찬가지로 NAT를 사용합니다. 예를 들어 컴퓨터의 개인 IP는 192.168.1.100일 수 있지만 라우터는 트래픽을 공용 IP(예: 1.1.1.1)에 매핑합니다. 인터넷의 모든 장치는 개인 IP(192.168.1.100) 대신 공용 IP(1.1.1.1)에서 들어오는 트래픽을 볼 수 있습니다.
다음 각 프로토콜에서 사용되는 포트 번호는 무엇입니까?:- SSH
- SMTP
- HTTP
- DNS
- HTTPS
- FTP
- SFTP
SSH - 22- SMTP - 25
- HTTP - 80
- DNS - 53
- HTTPS - 443
- FTP - 21
- SFTP-22
네트워크 성능에 영향을 미치는 요소는 무엇입니까?
다음을 포함한 여러 요인이 네트워크 성능에 영향을 미칠 수 있습니다.
대역폭: 네트워크 연결의 사용 가능한 대역폭은 성능에 큰 영향을 미칠 수 있습니다. 대역폭이 제한된 네트워크에서는 데이터 전송 속도가 느려지고 대기 시간이 길어지며 응답성이 저하될 수 있습니다.- 대기 시간: 대기 시간은 데이터가 네트워크의 한 지점에서 다른 지점으로 전송될 때 발생하는 지연을 나타냅니다. 대기 시간이 길면 네트워크 성능이 저하될 수 있으며, 특히 화상 회의 및 온라인 게임과 같은 실시간 애플리케이션의 경우 더욱 그렇습니다.
- 네트워크 정체: 너무 많은 장치가 동시에 네트워크를 사용하면 네트워크 정체가 발생하여 데이터 전송 속도가 느려지고 네트워크 성능이 저하될 수 있습니다.
- 패킷 손실: 전송 중에 데이터 패킷이 삭제되면 패킷 손실이 발생합니다. 이로 인해 네트워크 속도가 느려지고 전체 네트워크 성능이 저하될 수 있습니다.
- 네트워크 토폴로지: 스위치, 라우터 및 기타 네트워크 장치의 배치를 포함한 네트워크의 물리적 레이아웃은 네트워크 성능에 영향을 줄 수 있습니다.
- 네트워크 프로토콜: 네트워크 프로토콜마다 성능 특성이 다르며 이는 네트워크 성능에 영향을 미칠 수 있습니다. 예를 들어, TCP는 데이터 전달을 보장할 수 있는 안정적인 프로토콜이지만 오류 확인 및 재전송에 필요한 오버헤드로 인해 성능이 저하될 수도 있습니다.
- 네트워크 보안: 방화벽 및 암호화와 같은 보안 조치는 특히 상당한 처리 능력이 필요하거나 추가 대기 시간이 발생하는 경우 네트워크 성능에 영향을 미칠 수 있습니다.
- 거리: 네트워크에 있는 장치 간의 물리적 거리는 네트워크 성능에 영향을 미칠 수 있습니다. 특히 신호 강도와 간섭이 연결 및 데이터 전송 속도에 영향을 미칠 수 있는 무선 네트워크의 경우 더욱 그렇습니다.
APIPA란 무엇입니까?
APIPA는 기본 DHCP 서버에 연결할 수 없을 때 장치가 할당되는 IP 주소 집합입니다.
APIPA는 어떤 IP 범위를 사용합니까?
APIPA는 IP 범위 169.254.0.1 - 169.254.255.254를 사용합니다.
제어 영역 및 데이터 영역
"제어 평면"이란 무엇을 의미합니까?
제어 평면은 패킷을 다른 위치로 라우팅하고 전달하는 방법을 결정하는 네트워크의 일부입니다.
"데이터 평면"이란 무엇을 의미합니까?
데이터 평면은 실제로 데이터/패킷을 전달하는 네트워크의 일부입니다.
"관리 플레인"이란 무엇을 의미합니까?
모니터링 및 관리 기능을 말합니다.
라우팅 테이블 생성은 어느 평면(데이터, 제어, ...)에 속합니까?
제어 평면.
STP(스패닝 트리 프로토콜)에 대해 설명하세요.
링크 집계란 무엇입니까? 왜 사용됩니까?
비대칭 라우팅이란 무엇입니까? 그것을 처리하는 방법?
어떤 오버레이(터널) 프로토콜에 익숙합니까?
GRE란 무엇인가요? 어떻게 작동하나요?
VXLAN이란 무엇입니까? 어떻게 작동하나요?
SNAT란 무엇인가요?
OSPF에 대해 설명해보세요.
OSPF(Open Shortest Path First)는 다양한 유형의 라우터에서 구현할 수 있는 라우팅 프로토콜입니다. 일반적으로 OSPF는 Cisco, Juniper, Huawei와 같은 공급업체의 라우터를 포함하여 대부분의 최신 라우터에서 지원됩니다. 이 프로토콜은 IPv4 및 IPv6를 모두 포함하는 IP 기반 네트워크에서 작동하도록 설계되었습니다. 또한 라우터가 영역으로 그룹화되고 각 영역에는 고유한 토폴로지 맵과 라우팅 테이블이 있는 계층적 네트워크 설계를 사용합니다. 이 설계는 라우터 간에 교환해야 하는 라우팅 정보의 양을 줄이고 네트워크 확장성을 향상시키는 데 도움이 됩니다.
OSPF 4가지 유형의 라우터는 다음과 같습니다.
- 내부 라우터
- 지역 경계 라우터
- 자율 시스템 경계 라우터
- 백본 라우터
OSPF 라우터 유형에 대해 자세히 알아보세요: https://www.educba.com/ospf-router-types/
대기 시간이란 무엇입니까?
지연 시간은 정보가 소스에서 대상에 도달하는 데 걸리는 시간입니다.
대역폭이란 무엇입니까?
대역폭은 특정 기간 동안 통신 채널이 처리할 수 있는 데이터의 양을 측정하는 통신 채널의 용량입니다. 더 많은 대역폭은 더 많은 트래픽 처리와 더 많은 데이터 전송을 의미합니다.
처리량이란 무엇입니까?
처리량은 전송 채널을 통해 특정 기간 동안 전송된 실제 데이터 양을 측정한 것입니다.
검색 쿼리를 수행할 때 대기 시간과 처리량 중 무엇이 더 중요합니까? 글로벌 인프라를 어떻게 관리할 수 있을까요?
숨어 있음. 좋은 대기 시간을 가지려면 검색어가 가장 가까운 데이터 센터로 전달되어야 합니다.
동영상을 업로드할 때 지연 시간과 처리량 중 무엇이 더 중요합니까? 그리고 그것을 어떻게 보장할 수 있나요?
처리량. 처리량을 높이려면 업로드 스트림을 활용률이 낮은 링크로 라우팅해야 합니다.
요청을 전달할 때 다른 고려 사항(대기 시간 및 처리량 제외)은 무엇입니까?
- 캐시를 최신 상태로 유지합니다. 즉, 요청이 가장 가까운 데이터 센터가 아닌 곳으로 전달될 수 있음을 의미합니다.
척추와 잎에 대해 설명하세요
"Spine & Leaf"는 여러 스위치를 연결하고 네트워크 트래픽을 효율적으로 관리하기 위해 데이터 센터 환경에서 일반적으로 사용되는 네트워킹 토폴로지입니다. 이는 "스파인-리프" 아키텍처 또는 "리프-스파인" 토폴로지라고도 합니다. 이 설계는 높은 대역폭, 짧은 대기 시간 및 확장성을 제공하므로 대용량 데이터 및 트래픽을 처리하는 최신 데이터 센터에 이상적입니다. Spine & Leaf 네트워크 내에는 두 가지 주요 스위치 유형이 있습니다.
- 스파인 스위치: 스파인 스위치는 스파인 레이어에 배열된 고성능 스위치입니다. 이러한 스위치는 네트워크의 핵심 역할을 하며 일반적으로 각 리프 스위치와 상호 연결됩니다. 각 스파인 스위치는 데이터 센터의 모든 리프 스위치에 연결됩니다.
- 리프 스위치: 리프 스위치는 서버, 스토리지 어레이 및 기타 네트워킹 장비와 같은 최종 장치에 연결됩니다. 각 리프 스위치는 데이터 센터의 모든 스파인 스위치에 연결됩니다. 이를 통해 리프 스위치와 스파인 스위치 간에 비차단 풀 메시 연결이 생성되어 모든 리프 스위치가 최대 처리량으로 다른 리프 스위치와 통신할 수 있습니다.
Spine & Leaf 아키텍처는 최신 클라우드 컴퓨팅, 가상화 및 빅 데이터 애플리케이션의 요구 사항을 처리하고 확장 가능하고 안정적인 고성능 네트워크 인프라를 제공하는 능력으로 인해 데이터 센터에서 점점 더 인기를 얻고 있습니다.
네트워크 정체란 무엇입니까? 그 원인은 무엇입니까?
네트워크 정체는 네트워크에서 전송할 데이터가 너무 많고 수요를 처리할 용량이 충분하지 않을 때 발생합니다.
이로 인해 대기 시간이 증가하고 패킷 손실이 발생할 수 있습니다. 원인은 높은 네트워크 사용량, 대용량 파일 전송, 맬웨어, 하드웨어 문제 또는 네트워크 설계 문제 등 여러 가지일 수 있습니다.
네트워크 정체를 방지하려면 네트워크 사용량을 모니터링하고 수요를 제한하거나 관리하는 전략을 구현하는 것이 중요합니다.
UDP 패킷 형식에 대해 무엇을 알려줄 수 있나요? TCP 패킷 형식은 어떻습니까? 어떻게 다른가요?
지수 백오프 알고리즘이란 무엇입니까? 어디에 사용되나요?
해밍 코드를 사용하면 다음 데이터 워드 100111010001101에 대한 코드 워드는 무엇입니까?
00110011110100011101
애플리케이션 계층에서 발견되는 프로토콜의 예를 들어보세요.
HTTP(Hypertext Transfer Protocol) - 인터넷 웹페이지에 사용됩니다.- 단순 메일 전송 프로토콜(SMTP) - 이메일 전송
- 통신 네트워크 - (TELNET) - 클라이언트가 텔넷 서버에 액세스할 수 있도록 하는 터미널 에뮬레이션
- FTP(파일 전송 프로토콜) - 두 컴퓨터 간의 파일 전송을 용이하게 합니다.
- DNS(도메인 이름 시스템) - 도메인 이름 번역
- DHCP(동적 호스트 구성 프로토콜) - IP 주소, 서브넷 마스크 및 게이트웨이를 호스트에 할당합니다.
- SNMP(Simple Network Management Protocol) - 네트워크의 장치에서 데이터를 수집합니다.
네트워크 계층에서 발견되는 프로토콜의 예를 들어보세요.
인터넷 프로토콜(IP) - 한 시스템에서 다른 시스템으로 패킷 라우팅을 지원합니다.- ICMP(인터넷 제어 메시지 프로토콜) - 오류 메시지 및 디버깅 정보와 같은 진행 상황을 알려줍니다.
HSTS란 무엇입니까?
HTTP Strict Transport Security는 맨 처음에 전송된 응답 헤더를 통해 연결을 처리하는 방법을 사용자 에이전트와 웹 브라우저에 알리고 브라우저로 다시 보내는 웹 서버 지시문입니다. 이렇게 하면 HTTP를 통해 해당 도메인의 리소스를 로드하는 스크립트 호출을 무시하고 HTTPS 암호화를 통해 연결이 강제됩니다. 자세한 내용은 [여기](https://www.globalsign.com/en/blog/what-is-hsts-and-how-do-i-use-it#:~:text=HTTP%20Strict%20Transport%20Security)에서 확인하세요. %20(HSTS 및 %20back%20to%20the%20browser.)
네트워크 - 기타
인터넷이란 무엇입니까? 월드와이드웹과 똑같나요?
인터넷은 전 세계적으로 엄청난 양의 데이터를 전송하는 네트워크 네트워크를 의미합니다.
월드 와이드 웹(World Wide Web)은 인터넷을 기반으로 수백만 대의 서버에서 실행되는 응용 프로그램으로, 웹 브라우저라고 알려진 것을 통해 액세스됩니다.
ISP란 무엇입니까?
ISP(인터넷 서비스 제공업체)는 지역 인터넷 회사 제공업체입니다.
운영 체제
운영 체제 연습
이름 | 주제 | 목표 및 지침 | 해결책 | 댓글 |
---|
포크 101 | 포크 | 링크 | 링크 | |
포크 102 | 포크 | 링크 | 링크 | |
운영 체제 - 자기 평가
운영 체제 란 무엇입니까?
"운영 체제 : 세 가지 쉬운 조각"에서 :
"프로그램을 쉽게 실행할 수 있도록 책임을 져야합니다 (동시에 많은 것을 실행할 수있게 함). 프로그램이 메모리를 공유하고 프로그램이 장치와 상호 작용할 수 있도록 할 수 있습니다."
운영 체제 - 프로세스
과정이 무엇인지 설명해 주시겠습니까?
프로세스는 실행 프로그램입니다. 프로그램은 하나 이상의 지침이며 프로그램 (또는 프로세스)은 운영 체제에서 실행됩니다.
운영 체제의 프로세스를 위해 API를 설계해야한다면이 API는 어떻게 생겼습니까?
다음을 지원합니다.
작성 - 새 프로세스를 만들 수 있습니다- 삭제 - 프로세스를 제거/파괴 할 수 있습니다
- 상태 - 공정의 상태를 실행 중, 중지, 대기 등의 상태를 확인할 수 있습니다.
- 중지 - 실행 프로세스를 중지하십시오
프로세스는 어떻게 생성됩니까?
OS는 프로그램의 코드 및 추가 관련 데이터를 읽고 있습니다.- 프로그램의 코드는 메모리 또는 더 구체적으로 프로세스의 주소 공간에로드됩니다.
- 프로그램의 스택 (일명 런 타임 스택)에 메모리가 할당됩니다. 스택은 ArgV, Argc 및 Main ()와 같은 데이터로 OS에 의해 초기화되었습니다.
- 데이터 구조 링크 된 목록 및 해시 테이블과 같이 동적으로 할당 된 데이터에 필요한 프로그램 힙에 메모리가 할당됩니다.
- I/O 초기화 작업은 UNIX/Linux 기반 시스템에서와 같이 수행됩니다. 각 프로세스에는 3 개의 파일 설명자가 있습니다 (입력, 출력 및 오류)
- OS는 main ()에서 시작하여 프로그램을 실행하고 있습니다.
참인가 거짓인가? 메모리에 프로그램을로드하는 것은 간절히 이루어집니다 (한 번에 모두)
거짓. 과거에는 사실 이었지만 오늘날의 운영 체제는 게으른로드를 수행하므로 프로세스가 실행하는 데 필요한 관련 부분 만 먼저로드됩니다.
프로세스의 다른 상태는 무엇입니까?
실행 - 지침을 실행합니다- 준비 - 실행 준비가되었지만 다른 이유로 보류 중입니다.
- 차단 - I/O 디스크 요청과 같은 일부 작업이 완료되기를 기다리고 있습니다.
프로세스가 막히는 이유는 무엇입니까?
I/O 작업 (예 : 디스크 읽기)- 네트워크에서 패킷을 기다리고 있습니다
IPC (Inter Procivery Communication) 란 무엇입니까?
프로세스 간 통신 (IPC)은 프로세스가 공유 데이터를 관리 할 수있는 운영 체제에서 제공하는 메커니즘을 나타냅니다.
"시간 공유"는 무엇입니까?
하나의 실제 CPU가있는 시스템을 사용하더라도 여러 사용자가 작업하고 프로그램을 실행할 수 있습니다. 이는 컴퓨팅 리소스가 사용자에게 보이는 방식으로 공유되는 시간 공유로 가능하며 시스템에는 여러 CPU가 있지만 실제로는 멀티 프로 그램 및 멀티 태스킹을 적용하여 공유하는 하나의 CPU입니다.
"공간 공유"란 무엇입니까?
시간 공유의 반대입니다. 시간이 지남에 따라 리소스를 공유하는 것은 한 엔티티에서 한동안 사용되며 다른 리소스에서 동일한 리소스를 사용할 수 있습니다. 공간을 공유하는 공간은 여러 엔티티가 공유하지만 이들 사이에 전송되지 않는 방식으로 공유됩니다.
이 엔티티가 그것을 제거하기로 결정할 때까지 하나의 엔터티에서 사용됩니다. 예를 들어 스토리지를 가져 가십시오. 스토리지에서 파일은 삭제하기로 결정할 때까지 파일입니다.
주어진 순간에 실행되는 프로세스를 결정하는 구성 요소는 무엇입니까?
CPU 스케줄러
운영 체제 - 메모리
"가상 메모리"란 무엇이며 어떤 목적이 제공됩니까?
가상 메모리는 컴퓨터의 RAM을 하드 디스크의 임시 공간과 결합합니다. RAM이 낮을 때 가상 메모리는 데이터를 RAM에서 페이징 파일이라고하는 공간으로 이동하는 데 도움이됩니다. 페이징 파일로 데이터를 이동하면 RAM이 제거 될 수 있으므로 컴퓨터는 작업을 완료 할 수 있습니다. 일반적으로 컴퓨터가 더 많을수록 프로그램이 더 빨라집니다. https://www.minitool.com/lib/virtual-memory.html
수요 페이징이란 무엇입니까?
수요 페이징은 프로세스에서 액세스 할 때만 페이지가 물리적 메모리에로드되는 메모리 관리 기술입니다. 주문형 페이지를로드하여 시작 대기 시간 및 공간 오버 헤드를 줄임으로써 메모리 사용량을 최적화합니다. 그러나 처음으로 페이지에 액세스 할 때 약간의 대기 시간이 소개됩니다. 전반적으로 운영 체제에서 메모리 리소스를 관리하기위한 비용 효율적인 접근법입니다.
복사물이란 무엇입니까?
COP (Copy-on-Write)는 불필요한 정보 복사를 줄이기위한 자원 관리 개념입니다. 예를 들어 Posix Fork Syscall 내에서 구현되는 개념으로, 호출 프로세스의 중복 프로세스를 만듭니다. 아이디어 :
자원이 2 개 이상의 엔티티 (예 : 두 프로세스 사이의 공유 메모리 세그먼트)간에 공유되는 경우 모든 엔티티에 대해 리소스를 복사 할 필요는 없지만 모든 엔티티에는 공유 리소스에 대한 읽기 작업 액세스 권한이 있습니다. (공유 세그먼트는 읽기 전용으로 표시됩니다) (공유 리소스의 위치에 대한 포인터를 갖는 모든 엔티티를 생각하며, 그 값을 읽도록 불려받을 수 있습니다)- 한 엔티티가 공유 리소스에서 쓰기 작업을 수행한다면, 자원이 다른 모든 엔티티에 대해 영구적으로 변경되기 때문에 문제가 발생합니다. (스택에서 일부 변수를 수정하거나 힙에 동적으로 일부 데이터를 할당하는 프로세스를 생각하십시오. 공유 리소스에 대한 이러한 변경 사항은 다른 모든 프로세스에도 적용됩니다. 이것은 바람직하지 않은 동작입니다).
- 솔루션으로만, 공유 리소스에서 쓰기 작업을 수행하려는 경우이 리소스가 먼저 복사 된 다음 변경 사항이 적용됩니다.
커널은 무엇이며 무엇을합니까?
커널은 운영 체제의 일부이며 다음과 같은 작업을 담당합니다.
참인가 거짓인가? 커널의 일부 코드 조각은 메모리의 보호 영역에로드되므로 응용 프로그램이이를 덮어 쓸 수 없습니다.
진실
POSIX 란 무엇입니까?
POSIX (휴대용 운영 체제 인터페이스)는 UNIX와 같은 운영 체제와 응용 프로그램 사이의 인터페이스를 정의하는 일련의 표준입니다.
세마포어가 무엇인지, 운영 체제에서의 역할을 설명하십시오.
세마포어는 공유 리소스에 대한 액세스를 제어하기 위해 운영 체제 및 동시 프로그래밍에 사용되는 동기화 원시입니다. 여러 프로세스 또는 스레드로 리소스 액세스를 관리하기위한 카운터 또는 신호 메커니즘 역할을하는 변수 또는 추상 데이터 유형입니다.
캐시 란 무엇입니까? 버퍼 란 무엇입니까?
캐시 : 캐시는 일반적으로 프로세스가 디스크를 읽고 쓰는 경우 일반적으로 다른 프로그램에서 사용하는 유사한 데이터를 쉽게 액세스 할 수 있도록 프로세스를 더 빠르게 만들 수 있습니다. 버퍼 : 임시 목적으로 데이터를 보유하는 데 사용되는 RAM의 예약장.
가상화
가상화 란 무엇입니까?
가상화는 소프트웨어를 사용하여 컴퓨터 하드웨어를 통해 추상화 계층을 생성하여 단일 컴퓨터 (메모리, 스토리지 등)의 하드웨어 요소를 일반적으로 VM (Virtual Machines)이라고하는 여러 가상 컴퓨터로 나눌 수 있습니다.
하이퍼 바이저 란 무엇입니까?
RED HAT : "하이퍼 바이저는 가상 머신 (VMS)을 생성하고 실행하는 소프트웨어입니다. 때로는 가상 머신 모니터 (VMM)라고하는 하이퍼 바이저는 하이퍼 바이저 운영 체제와 리소스를 가상 머신에서 분리하고 이들의 생성 및 관리를 가능하게합니다. vms. "
여기서 더 읽어보세요
어떤 유형의 하이퍼 바이저가 있습니까?
호스팅 된 하이퍼 바이저 및 베어 메탈 하이퍼 바이저.
호스팅 된 하이퍼 바이저에 대한 베어 메탈 하이퍼 바이저의 장점과 단점은 무엇입니까?
자체 드라이버와 하드웨어 구성 요소에 직접 액세스하기 때문에 Barremetal Hypervisor는 종종 안정성 및 확장 성과 함께 더 나은 성능을 갖습니다.
반면에, 로딩 (모든) 드라이버에 관한 제한이있을 수 있으므로 호스팅 된 하이퍼 바이저는 일반적으로 더 나은 하드웨어 호환성을 갖는 이점을 얻을 수 있습니다.
어떤 유형의 가상화가 있습니까?
운영 체제 가상화 네트워크 기능 가상화 데스크탑 가상화
컨테이너화는 가상화 유형입니까?
예, 커널이 공유되어 여러 격리 된 사용자 공간 인스턴스를 사용할 수있는 운영 시스템 수준 가상화입니다.
가상 기계의 도입이 어떻게 업계를 변화 시켰고 응용 프로그램이 배치되는 방식은 무엇입니까?
가상 기계를 도입하면 회사는 동일한 하드웨어에 여러 비즈니스 애플리케이션을 배포 할 수있는 반면, 각 응용 프로그램은 각각의 별도의 운영 체제에서 실행되는 보안 방식으로 서로 분리됩니다.
가상 머신
컨테이너 시대에 가상 기계가 필요합니까? 그들은 여전히 관련이 있습니까?
예, 가상 기계는 컨테이너 시대에도 여전히 관련이 있습니다. 컨테이너는 가상 머신에 대한 가볍고 휴대용 대안을 제공하지만 특정 제한 사항이 있습니다. 가상 머신은 분리 및 보안을 제공하고 다른 운영 체제를 실행할 수 있으며 레거시 앱에 적합하기 때문에 여전히 중요합니다. 예를 들어 컨테이너 제한은 호스트 커널을 공유합니다.
프로메테우스
Prometheus는 무엇입니까? Prometheus의 주요 기능은 무엇입니까?
Prometheus는 원래 SoundCloud에서 개발 된 인기있는 오픈 소스 시스템 모니터링 및 경고 툴킷입니다. 시계열 데이터를 수집하고 저장하고 PromQL이라는 강력한 쿼리 언어를 사용하여 해당 데이터의 쿼리 및 분석을 허용하도록 설계되었습니다. Prometheus는 자주 클라우드 네이티브 애플리케이션, 마이크로 서비스 및 기타 최신 인프라를 모니터링하는 데 자주 사용됩니다.
Prometheus의 주요 기능 중 일부는 다음과 같습니다.
1. Data model: Prometheus uses a flexible data model that allows users to organize and label their time-series data in a way that makes sense for their particular use case. Labels are used to identify different dimensions of the data, such as the source of the data or the environment in which it was collected.
2. Pull-based architecture: Prometheus uses a pull-based model to collect data from targets, meaning that the Prometheus server actively queries its targets for metrics data at regular intervals. This architecture is more scalable and reliable than a push-based model, which would require every target to push data to the server.
3. Time-series database: Prometheus stores all of its data in a time-series database, which allows users to perform queries over time ranges and to aggregate and analyze their data in various ways. The database is optimized for write-heavy workloads, and can handle a high volume of data with low latency.
4. Alerting: Prometheus includes a powerful alerting system that allows users to define rules based on their metrics data and to send alerts when certain conditions are met. Alerts can be sent via email, chat, or other channels, and can be customized to include specific details about the problem.
5. Visualization: Prometheus has a built-in graphing and visualization tool, called PromDash, which allows users to create custom dashboards to monitor their systems and applications. PromDash supports a variety of graph types and visualization options, and can be customized using CSS and JavaScript.
전반적으로 Prometheus는 시스템 및 응용 프로그램을 모니터링하고 분석하는 강력하고 유연한 도구이며 클라우드 네이티브 모니터링 및 관찰 가능성을 위해 업계에서 널리 사용됩니다.
어떤 시나리오에서 Prometheus를 사용하지 않는 것이 더 낫습니까?
Prometheus 문서에서 : "요청 당 청구와 같은 100% 정확도가 필요한 경우".
Prometheus 아키텍처 및 구성 요소를 설명하십시오
Prometheus 아키텍처는 4 가지 주요 구성 요소로 구성됩니다.
1. Prometheus Server: The Prometheus server is responsible for collecting and storing metrics data. It has a simple built-in storage layer that allows it to store time-series data in a time-ordered database.
2. Client Libraries: Prometheus provides a range of client libraries that enable applications to expose their metrics data in a format that can be ingested by the Prometheus server. These libraries are available for a range of programming languages, including Java, Python, and Go.
3. Exporters: Exporters are software components that expose existing metrics from third-party systems and make them available for ingestion by the Prometheus server. Prometheus provides exporters for a range of popular technologies, including MySQL, PostgreSQL, and Apache.
4. Alertmanager: The Alertmanager component is responsible for processing alerts generated by the Prometheus server. It can handle alerts from multiple sources and provides a range of features for deduplicating, grouping, and routing alerts to appropriate channels.
전반적으로 Prometheus Architecture는 확장 가능하고 탄력적으로 설계되었습니다. 서버 및 클라이언트 라이브러리는 대규모의 역동적 인 환경에서 모니터링을 지원하기 위해 분산 방식으로 배포 할 수 있습니다.
예를 들어 Prometheus를 InfluxDB와 같은 다른 솔루션과 비교할 수 있습니까?
Prometheus는 IPLUXDB와 같은 다른 모니터링 솔루션과 비교하여 고성능 및 확장 성으로 알려져 있습니다. 대량의 데이터를 처리 할 수 있으며 모니터링 생태계의 다른 도구와 쉽게 통합 할 수 있습니다. 반면에 IPLUXDB는 사용 편의성과 단순성으로 유명합니다. 사용자 친화적 인 인터페이스가 있으며 데이터 수집 및 쿼리를위한 사용하기 쉬운 API를 제공합니다.
또 다른 인기있는 솔루션 인 Nagios는 데이터 수집을위한 푸시 기반 모델에 의존하는보다 전통적인 모니터링 시스템입니다. Nagios는 오랫동안 주변에 있었고 안정성과 신뢰성으로 유명합니다. 그러나 Prometheus와 비교할 때 Nagios는 다차원 데이터 모델 및 강력한 쿼리 언어와 같은 고급 기능이 부족합니다.
전반적으로, 모니터링 솔루션의 선택은 조직의 특정 요구와 요구 사항에 따라 다릅니다. Prometheus는 대규모 모니터링 및 경고를위한 훌륭한 선택이지만 InfuxDB는 사용 편의성과 단순성이 필요한 소규모 환경에 더 적합 할 수 있습니다. Nagios는 고급 기능보다 안정성과 신뢰성을 우선시하는 조직에 확실한 선택으로 남아 있습니다.
경고는 무엇입니까?
Prometheus에서는 특정 조건 또는 임계 값이 충족 될 때 경고가 트리거됩니다. 특정 메트릭이 특정 임계 값을 가로 지르거나 특정 이벤트가 발생할 때 경고를 트리거하도록 구성 할 수 있습니다. 경고가 트리거되면 이메일, 호출기 또는 채팅과 같은 다양한 채널로 라우팅하여 관련 팀이나 개인에게 적절한 조치를 취하도록 알릴 수 있습니다. 경고는 팀이 사용자에게 영향을 미치거나 시스템 가동 중지 시간을 유발하기 전에 문제를 사전에 감지하고 응답 할 수 있으므로 모든 모니터링 시스템의 중요한 구성 요소입니다. 인스턴스 란 무엇입니까? 직업이란 무엇입니까?
Prometheus에서 인스턴스는 모니터링되는 단일 대상을 나타냅니다. 예를 들어 단일 서버 또는 서비스. 작업은 동일한 응용 프로그램을 제공하는 웹 서버 세트와 같이 동일한 기능을 수행하는 인스턴스 세트입니다. 작업을 통해 목표 그룹을 정의하고 관리 할 수 있습니다.
본질적으로, 인스턴스는 Prometheus가 메트릭을 수집하는 개별 목표이며, 작업은 그룹으로 관리 할 수있는 유사한 사례의 모음입니다.
Prometheus가 지원하는 핵심 메트릭 유형은 무엇입니까?
Prometheus는 다음을 포함하여 여러 유형의 메트릭을 지원합니다. 1. Counter: A monotonically increasing value used for tracking counts of events or samples. Examples include the number of requests processed or the total number of errors encountered. 2. Gauge: A value that can go up or down, such as CPU usage or memory usage. Unlike counters, gauge values can be arbitrary, meaning they can go up and down based on changes in the system being monitored. 3. Histogram: A set of observations or events that are divided into buckets based on their value. Histograms help in analyzing the distribution of a metric, such as request latencies or response sizes. 4. Summary: A summary is similar to a histogram, but instead of buckets, it provides a set of quantiles for the observed values. Summaries are useful for monitoring the distribution of request latencies or response sizes over time.
Prometheus는 또한 Sum, Max, Min 및 Rate와 같은 메트릭을 집계 및 조작하기위한 다양한 기능과 운영자를 지원합니다. 이러한 기능은 시스템 메트릭을 모니터링하고 경고하기위한 강력한 도구입니다.
수출국이란 무엇입니까? 그것은 무엇을 위해 사용됩니까?
수출 업체는 타사 시스템 또는 응용 프로그램과 Prometheus 사이의 다리 역할을하므로 Prometheus가 해당 시스템 또는 응용 프로그램에서 데이터를 모니터링하고 수집 할 수 있습니다. 수출 업체는 서버 역할을하여 Prometheus에서 Scrape Metrics에 대한 요청에 대한 특정 네트워크 포트에서 청취합니다. 타사 시스템 또는 응용 프로그램에서 메트릭을 수집하여 Prometheus가 이해할 수있는 형식으로 변환합니다. 그런 다음 수출 업체는 HTTP 엔드 포인트를 통해 이러한 메트릭을 Prometheus에 노출시켜 수집 및 분석에 사용할 수 있습니다.
수출 업체는 일반적으로 데이터베이스, 웹 서버 및 스토리지 시스템과 같은 다양한 유형의 인프라 구성 요소를 모니터링하는 데 사용됩니다. 예를 들어, MySQL 및 PostgreSQL과 같은 인기있는 데이터베이스를 모니터링 할 수있는 수출 업체와 Apache 및 Nginx와 같은 웹 서버가 있습니다.
전반적으로 수출업자는 Prometheus 생태계의 중요한 구성 요소로 광범위한 시스템 및 응용 프로그램을 모니터링하고 플랫폼에 대한 높은 수준의 유연성과 확장 성을 제공합니다.
Prometheus 모범 사례는 무엇입니까?
그중 세 가지가 있습니다. 1. Label carefully: Careful and consistent labeling of metrics is crucial for effective querying and alerting. Labels should be clear, concise, and include all relevant information about the metric. 2. Keep metrics simple: The metrics exposed by exporters should be simple and focus on a single aspect of the system being monitored. This helps avoid confusion and ensures that the metrics are easily understandable by all members of the team. 3. Use alerting sparingly: While alerting is a powerful feature of Prometheus, it should be used sparingly and only for the most critical issues. Setting up too many alerts can lead to alert fatigue and result in important alerts being ignored. It is recommended to set up only the most important alerts and adjust the thresholds over time based on the actual frequency of alerts.
주어진 시간에 총 요청을받는 방법은 무엇입니까?
Prometheus를 사용하여 주어진 시간에 총 요청을 받으려면 * sum * 함수를 * rate * 함수와 함께 사용할 수 있습니다. 다음은 마지막 시간에 총 요청 수를 제공하는 예제입니다. sum(rate(http_requests_total[1h]))
이 쿼리에서 HTTP_REQUESTS_TOTAL 은 총 HTTP 요청 수를 추적하는 메트릭의 이름이며 요율 기능은 지난 시간 동안 초당 요청 속도를 계산합니다. 그런 다음 합 함수는 모든 요청을 추가하여 마지막 시간에 총 요청 수를 제공합니다.
속도 함수의 지속 시간을 변경하여 시간 범위를 조정할 수 있습니다. 예를 들어, 마지막 날에 총 요청 수를 얻으려면 기능을 속도로 변경할 수 있습니다 (http_requests_total [1d]) .
Prometheus의 HA는 무엇을 의미합니까?
HA는 고 가용성을 나타냅니다. 이는 시스템이 실패 나 다른 문제에 직면하더라도 신뢰성이 높고 항상 사용할 수 있도록 설계되었음을 의미합니다. 실제로, 여기에는 일반적으로 Prometheus의 여러 인스턴스를 설정하고 모두 동기화되고 완벽하게 함께 작동 할 수 있도록하는 것이 포함됩니다. 이것은로드 밸런싱, 복제 및 장애 조치 메커니즘과 같은 다양한 기술을 통해 달성 될 수 있습니다. Prometheus에서 HA를 구현함으로써 사용자는 하드웨어 또는 소프트웨어 고장, 네트워크 문제 또는 가동 중지 시간 또는 데이터 손실을 유발할 수있는 기타 문제에 직면하더라도 모니터링 데이터가 항상 최신 상태인지 확인할 수 있습니다.
두 가지 측정 항목에 어떻게 가입합니까?
Prometheus에서는 * join () * 함수를 사용하여 두 가지 메트릭을 결합 할 수 있습니다. * join () * 함수는 레이블 값을 기준으로 둘 이상의 시계열을 결합합니다. 두 가지 의무적 인 주장이 필요합니다. *on *및 *table *. on 인수는 * on *에 가입 할 레이블을 지정하고 * 테이블 * 인수는 가입 할 시계열을 지정합니다. 다음은 join () 함수를 사용하여 두 가지 메트릭에 가입하는 방법의 예입니다.
sum_series(
join(
on(service, instance) request_count_total,
on(service, instance) error_count_total,
)
)
이 예에서는 join () 함수는 서비스 및 인스턴스 레이블 값을 기반으로 request_count_total 및 error_count_total 시계열을 결합합니다. SUM_SERIES () 함수는 결과 시계열의 합을 계산합니다.
레이블 값을 반환하는 쿼리를 작성하는 방법은 무엇입니까?
Prometheus에서 레이블 값을 반환하는 쿼리를 작성하려면 * label_values * 함수를 사용할 수 있습니다. * label_values * 함수는 두 가지 인수, 즉 레이블의 이름과 메트릭의 이름을 사용합니다. 예를 들어, 메소드 라는 레이블이있는 http_requests_total 이라는 메트릭이 있고 메소드 레이블의 모든 값을 반환하려면 다음 쿼리를 사용할 수 있습니다.
label_values(http_requests_total, method)
이것은 http_requests_total metric의 메소드 레이블의 모든 값 목록을 반환합니다. 그런 다음이 목록을 추가 쿼리로 사용하거나 데이터를 필터링 할 수 있습니다.
cpu_user_seconds를 CPU 사용량으로 어떻게 변환합니까?
* CPU_USER_SECONDS *를 CPU 사용으로 변환하려면 총 경과 시간과 CPU 코어 수로 나눈 다음 100을 곱해야합니다 100 * sum(rate(process_cpu_user_seconds_total{job="<job-name>"}[<time-period>])) by (instance) / (<time-period> * <num-cpu-cores>)
공식은 다음과 같습니다. 100 * sum(rate(process_cpu_user_seconds_total{job="<job-name>"}[<time-period>])) by (instance) / (<time-period> * <num-cpu-cores>)
여기, 쿼리하려는 직업의 이름입니다. 쿼리하려는 시간 범위 (예 : 5m , 1h ) 및 쿼리중인 기계의 CPU 코어 수입니다.
예를 들어, 4 개의 CPU 코어가있는 머신에서 실행되는 My-Job 이라는 작업의 경우 지난 5 분 동안 CPU 사용량을 백분율로 얻으려면 다음 쿼리를 사용할 수 있습니다.
100 * sum(rate(process_cpu_user_seconds_total{job="my-job"}[5m])) by (instance) / (5m * 4)
가다
GO 프로그래밍 언어의 몇 가지 특성은 무엇입니까?
- 강력하고 정적 타이핑 - 변수의 유형은 시간이 지남에 따라 변경 될 수 없으며 컴파일 시간에 정의해야합니다.
- 단순화 속도
- 간단 시간
- 내장 동시성
- 가비지 독립적 인
- 플랫폼 독립적 인
- 컴파일 - 앱을 실행하는 데 필요한 모든 것 하나의 바이너리로 컴파일됩니다. 런타임에서 버전 관리에 매우 유용합니다.
Go는 또한 좋은 커뮤니티가 있습니다.
var x int = 2
와 x := 2
의 차이점은 무엇입니까?
결과는 동일하며 값 2의 변수입니다.
var x int = 2
사용하면 x := 2
로 변수 유형을 정수로 설정하고 있습니다.
참인가 거짓인가? 이동 중에 우리는 변수를 다시 고정 할 수 있으며 일단 사용해야한다고 선언합니다.
거짓. 우리는 변수를 다시 고정 할 수는 없지만 예, 선언 된 변수를 사용해야합니다.
어떤 GO의 라이브러리를 사용 했습니까?
이것은 사용량에 따라 답변해야하지만 몇 가지 예는 다음과 같습니다.
다음 코드 블록의 문제는 무엇입니까? 고치는 방법? func main() {
var x float32 = 13.5
var y int
y = x
}
다음과 같은 코드 블록은 정수 101을 문자열로 변환하려고하지만 대신 "e"를 얻습니다. 왜 그럴까요? 고치는 방법? package main
import "fmt"
func main () {
var x int = 101
var y string
y = string ( x )
fmt . Println ( y )
}
유니 코드 값이 101로 설정된 것을보고 정수를 문자열로 변환하는 데 사용합니다. "101"을 얻으려면 "strconv"패키지를 사용하고 y = string(x)
y = strconv.Itoa(x)
로 바꿔야합니다.
다음 코드에 어떤 문제가 있습니까? : package main
func main() {
var x = 2
var y = 3
const someConst = x + y
}
GO의 상수는 상수 표현을 사용하여 만 선언 할 수 있습니다. 그러나 x
, y
와 그들의 합은 가변적입니다.
const initializer x + y is not a constant
다음 코드 블록의 출력은 무엇입니까? : package main
import "fmt"
const (
x = iota
y = iota
)
const z = iota
func main () {
fmt . Printf ( "%v n " , x )
fmt . Printf ( "%v n " , y )
fmt . Printf ( "%v n " , z )
}
GO의 IOTA 식별자는 Const 선언에서 사용하여 증가 번호의 정의를 단순화하기 위해 사용됩니다. 표현에 사용될 수 있으므로 간단한 열거 외에는 일반성을 제공합니다.
첫 번째 IOTA 그룹에서 x
와 y
, 두 번째는 z
.
Go Wiki의 iota 페이지
이동 중에 _는 무엇입니까?
반품 값에 대한 모든 변수를 선언하지 않아도됩니다. 그것을 빈 식별자라고합니다.
그렇게 대답하십시오
다음 코드 블록의 출력은 무엇입니까? : package main
import "fmt"
const (
_ = iota + 3
x
)
func main () {
fmt . Printf ( "%v n " , x )
}
첫 번째 IOTA는 값 3
( + 3
)으로 선언되었으므로 다음은 값 4
가 있습니다.
다음 코드 블록의 출력은 무엇입니까? : package main
import (
"fmt"
"sync"
"time"
)
func main () {
var wg sync. WaitGroup
wg . Add ( 1 )
go func () {
time . Sleep ( time . Second * 2 )
fmt . Println ( "1" )
wg . Done ()
}()
go func () {
fmt . Println ( "2" )
}()
wg . Wait ()
fmt . Println ( "3" )
}
출력 : 2 1 3
sync/waitgroup에 대한 aritcle
Golang 패키지 동기화
다음 코드 블록의 출력은 무엇입니까? : package main
import (
"fmt"
)
func mod1 ( a [] int ) {
for i := range a {
a [ i ] = 5
}
fmt . Println ( "1:" , a )
}
func mod2 ( a [] int ) {
a = append ( a , 125 ) // !
for i := range a {
a [ i ] = 5
}
fmt . Println ( "2:" , a )
}
func main () {
s1 := [] int { 1 , 2 , 3 , 4 }
mod1 ( s1 )
fmt . Println ( "1:" , s1 )
s2 := [] int { 1 , 2 , 3 , 4 }
mod2 ( s2 )
fmt . Println ( "2:" , s2 )
}
산출:
1 [5 5 5 5]
1 [5 5 5 5]
2 [5 5 5 5 5]
2 [1 2 3 4]
mod1
a는 링크이고 a[i]
사용할 때는 s1
값을 변경합니다. 그러나 mod2
에서 append
새로운 슬라이스를 생성하며 s2
아닌 a
만 변경합니다.
배열에 대한 aritcle, append
에 대한 블로그 게시물
다음 코드 블록의 출력은 무엇입니까? : package main
import (
"container/heap"
"fmt"
)
// An IntHeap is a min-heap of ints.
type IntHeap [] int
func ( h IntHeap ) Len () int { return len ( h ) }
func ( h IntHeap ) Less ( i , j int ) bool { return h [ i ] < h [ j ] }
func ( h IntHeap ) Swap ( i , j int ) { h [ i ], h [ j ] = h [ j ], h [ i ] }
func ( h * IntHeap ) Push ( x interface {}) {
// Push and Pop use pointer receivers because they modify the slice's length,
// not just its contents.
* h = append ( * h , x .( int ))
}
func ( h * IntHeap ) Pop () interface {} {
old := * h
n := len ( old )
x := old [ n - 1 ]
* h = old [ 0 : n - 1 ]
return x
}
func main () {
h := & IntHeap { 4 , 8 , 3 , 6 }
heap . Init ( h )
heap . Push ( h , 7 )
fmt . Println (( * h )[ 0 ])
}
출력: 3
골랑 컨테이너/힙 패키지
몽고
MongoDB의 장점은 무엇입니까? 즉, 왜 NOSQL의 구현이 아닌 MongoDB를 선택하는 이유는 무엇입니까?
MongoDB 장점은 다음과 같습니다.
- 회로도
- 쉽게 확장하기 쉽습니다
- 복잡한 조인이 없습니다
- 단일 객체의 구조가 명확합니다
SQL과 NOSQL의 차이점은 무엇입니까?
주요 차이점은 SQL 데이터베이스가 구조화되어 있다는 것입니다 (데이터는 Excel 스프레드 시트 테이블과 같이 행 및 열이있는 테이블 형태로 저장되어 있음). 키 값 쌍, 문서 지향 등과 같은 등
어떤 시나리오에서 SQL을 통해 NOSQL/Mongo를 사용하는 것을 선호합니까?
자주 변화하는 이종 데이터- 데이터 일관성과 무결성이 최우선 순위가 아닙니다
- 데이터베이스가 빠르게 확장 해야하는 경우 가장 좋습니다
문서는 무엇입니까? 컬렉션이란 무엇입니까?
문서는 MongoDB의 레코드이며 BSON (Binary JSON) 형식으로 저장되며 MongoDB의 기본 데이터 단위입니다.- 컬렉션은 MongoDB의 단일 데이터베이스에 저장된 관련 문서 그룹입니다.
골재는 무엇입니까?
- Aggregator는 MongoDB의 프레임 워크로 일련의 데이터 세트에서 작업을 수행하여 단일 계산 된 결과를 반환합니다.
무엇이 더 낫습니까? 내장 된 문서 또는 참조?
- 더 나은 명확한 답변은 없으며 특정 사용 사례 및 요구 사항에 따라 다릅니다. 일부 설명 : 임베디드 문서는 원자 업데이트를 제공하는 반면, 참조 된 문서는 더 나은 정규화를 허용합니다.
몽고에서 데이터 검색 최적화를 수행 했습니까? 그렇지 않다면 느린 데이터 검색을 최적화하는 방법에 대해 생각할 수 있습니까?
- MongoDB에서 데이터 검색을 최적화하는 몇 가지 방법은 인덱싱, 적절한 스키마 설계, 쿼리 최적화 및 데이터베이스로드 밸런싱입니다.
쿼리
이 쿼리를 설명하십시오 : db.books.find({"name": /abc/})
이 쿼리를 설명하십시오 : db.books.find().sort({x:1})
find ()와 find_one ()의 차이점은 무엇입니까?
find()
쿼리 조건과 일치하는 모든 문서를 반환합니다.- find_one ()은 쿼리 조건과 일치하는 하나의 문서 만 반환합니다 (또는 일치하지 않으면 NULL).
Mongo DB에서 데이터를 어떻게 내보낼 수 있습니까?
SQL
SQL 운동
이름 | 주제 | 목표 및 지시 | 해결책 | 댓글 |
---|
기능 대 비교 | 쿼리 개선 | 운동 | 해결책 | |
SQL 자체 평가
SQL이란 무엇입니까?
SQL (구조화 된 쿼리 언어)은 관계형 데이터베이스 (MySQL, Mariadb 등)의 표준 언어입니다.
관계형 데이터베이스에서 데이터를 읽고, 업데이트, 제거 및 작성하는 데 사용됩니다.
SQL은 NOSQL과 어떻게 다릅니다
주요 차이점은 SQL 데이터베이스가 구조화되어 있다는 것입니다 (데이터는 Excel 스프레드 시트 테이블과 같이 행 및 열이있는 테이블 형태로 저장되어 있음). 키 값 쌍, 문서 지향 등과 같은 등
SQL을 사용하는 것이 가장 좋습니까? NOSQL?
SQL- 데이터 무결성이 중요 할 때 가장 잘 사용됩니다. SQL은 일반적으로 산성 규정 준수로 인해 금융 분야의 많은 비즈니스 및 영역에서 구현됩니다.
NOSQL- 빨리 확장해야한다면 좋습니다. NOSQL은 웹 애플리케이션을 염두에두고 설계되었으므로 여러 서버에 동일한 정보를 빠르게 전파 해야하는 경우에도 효과적입니다.
또한 NOSQL은 관계형 데이터베이스가 필요로하는 열 및 행 구조가있는 엄격한 테이블을 준수하지 않으므로 다양한 데이터 유형을 함께 저장할 수 있습니다.
실용적인 SQL- 기본
이 질문에 대해서는 다음과 같은 고객과 주문 테이블을 사용할 것입니다.
고객
customer_id | 고객 _name | items_in_cart | Cash_spent_to_date |
---|
100204 | 존 스미스 | 0 | 20.00 |
100205 | 제인 스미스 | 3 | 40.00 |
100206 | 바비 프랭크 | 1 | 100.20 |
명령
customer_id | Order_id | 목 | 가격 | date_sold |
---|
100206 | A123 | 러버덕키 | 2.20 | 2019-09-18 |
100206 | A123 | 버블 목욕 | 8.00 | 2019-09-18 |
100206 | Q987 | 80 팩 TP | 90.00 | 2019-09-20 |
100205 | Z001 | 고양이 음식 - 참치 물고기 | 10.00 | 2019-08-05 |
100205 | Z001 | 고양이 음식 - 닭고기 | 10.00 | 2019-08-05 |
100205 | Z001 | 고양이 음식 - 쇠고기 | 10.00 | 2019-08-05 |
100205 | Z001 | 고양이 음식 - 키티 퀘사 디야 | 10.00 | 2019-08-05 |
100204 | x202 | 커피 | 20.00 | 2019-04-29 |
이 테이블에서 모든 필드를 어떻게 선택합니까?
선택하다 *
고객으로부터;
John의 카트에는 몇 개의 품목이 있습니까?
items_in_cart를 선택하십시오
고객으로부터
여기서 customer_name = "John Smith";
모든 고객에게 소비 된 모든 현금의 합은 얼마입니까?
sum_cash로 합 (cash_spent_to_date)을 선택하십시오
고객으로부터;
카트에 품목이 몇 명입니까?
count (1)를 number_of_people_w_items로 선택하십시오
고객으로부터
여기서 items_in_cart> 0;
고객 테이블에 주문 테이블에 어떻게 가입 하시겠습니까?
당신은 그들에게 고유 키에 참여할 것입니다. 이 경우 고유 키는 고객 테이블과 주문 테이블 모두에서 customer_id입니다.
어떤 고객이 어떤 품목을 주문했는지 어떻게 보여 주겠습니까?
C.Customer_Name, O.Item을 선택하십시오
고객으로부터 c
왼쪽 가입 명령 o
c.customer_id = O.Customer_id;
with 성명서를 사용하여 누가 고양이 사료를 주문했는지, 지출 한 총 금액을 어떻게 보여 주겠습니까?
cat_food as (
Total_Price로 Customer_id, Sum (가격)을 선택하십시오
주문에서
"%고양이 음식%"와 같은 항목
customer_id에 의해 그룹
)
Customer_Name, Total_Price를 선택하십시오
고객으로부터 c
내부 조인 Cat_food f
c.customer_id = f.customer_id
여기서 c.customer_id in (cat_food에서 customer_id);
이것은 간단한 진술 이었지만 "With"조항은 복잡한 쿼리를 다른 쿼리에 연결하기 전에 테이블에서 실행해야 할 때 실제로 빛납니다. 완전히 새 테이블을 만드는 대신 쿼리를 실행할 때 의사 온도를 만들기 때문에 진술이 좋습니다.
고양이 식품의 모든 구매의 합은 쉽게 구할 수 없었으므로, 우리는 문을 사용하여 각 고객이 소비 한 가격의 합을 검색하기 위해 의사 테이블을 만들기 위해 명세서를 사용한 다음 정상적으로 테이블에 가입했습니다.
다음 중 어떤 쿼리를 사용 하시겠습니까? SELECT count(*) SELECT count(*)
FROM shawarma_purchases FROM shawarma_purchases
WHERE vs. WHERE
YEAR(purchased_at) == '2017' purchased_at >= '2017-01-01' AND
purchased_at <= '2017-31-12'
SELECT count(*) FROM shawarma_purchases WHERE purchased_at >= '2017-01-01' AND purchased_at <= '2017-31-12'
함수 ( YEAR(purchased_at)
)를 사용하면 인덱스를 사용하는 것과는 달리 전체 데이터베이스를 스캔하고 기본적으로 자연 상태에서 열을 스캔해야합니다.
오픈스택
OpenStack의 어떤 구성 요소/프로젝트에 익숙합니까?
다음 서비스/프로젝트 각각의 책임이 무엇인지 말씀해 주시겠습니까? :
Nova- 가상 인스턴스를 관리합니다- 중성자 - 네트워크를 서비스로 제공하여 네트워킹 관리 (NAAS)
- 콘크리트 - 블록 스토리지
- Glance- 가상 머신 및 컨테이너의 이미지 관리 (검색, 얻기 및 등록)
- Keystone- 클라우드 전체의 인증 서비스
다음 각각에 사용 된 서비스/프로젝트를 식별하십시오.- 복사 또는 스냅 샷 인스턴스
- 자원을보고 수정하기위한 GUI
- 블록 저장
- 가상 인스턴스를 관리합니다
한눈에 - 이미지 서비스. 복사 또는 스냅 샷 인스턴스에도 사용됩니다- Horizon -Resources를보고 수정하기위한 GUI
- 콘크리트 - 블록 스토리지
- Nova- 가상 인스턴스를 관리합니다
임차인/프로젝트는 무엇입니까?
참 또는 거짓을 결정하십시오.- OpenStack은 무료로 사용할 수 있습니다
- 네트워킹을 담당하는 서비스는 한눈에 볼 수 있습니다
- 임차인/프로젝트의 목적은 다른 프로젝트와 OpenStack 사용자 간의 리소스를 공유하는 것입니다.
떠 다니는 IP로 인스턴스를 가져 오는 방법에 대해 자세히 설명하십시오.
고객으로부터 "인스턴스를 핑할 수는 있지만 연결할 수 없음 (SSH)을 연결할 수 없습니다"라는 전화를받습니다. 문제가 무엇 일 수 있습니까?
어떤 유형의 네트워크 오픈 스택이 지원합니까?
OpenStack 스토리지 문제를 어떻게 디버그합니까? (도구, 로그, ...)
OpenStack 컴퓨팅 문제를 어떻게 디버그합니까? (도구, 로그, ...)
OpenStack 배포 및 트리플로
과거에 OpenStack을 배포 했습니까? 그렇다면 어떻게했는지 설명해 주시겠습니까?
Tripleo에 익숙합니까? DevStack 또는 Packstack과 어떻게 다른가요?
바로 여기에서 Tripleo에 대해 읽을 수 있습니다
OpenStack Compute
Nova를 자세히 설명 할 수 있습니까?
가상 인스턴스를 프로비저닝하고 관리하는 데 사용됩니다- 로깅, 최종 사용자 제어, 감사 등 다양한 레벨의 다중 테넌시를 지원합니다.
- 매우 확장 가능합니다
- 인증은 내부 시스템 또는 LDAP를 사용하여 수행 할 수 있습니다
- 여러 유형의 블록 저장을 지원합니다
- 하드웨어 및 하이퍼 바이저의 불가지론을 시도합니다
Nova 아키텍처 및 구성 요소에 대해 무엇을 알고 있습니까?
Nova -Api- 메타 데이터를 제공하고 API를 계산하는 서버- 다른 Nova 구성 요소는 큐 (일반적으로 RabbitMQ)와 데이터베이스를 사용하여 통신합니다.
- 인스턴스 생성 요청은 Nova-Scheduler가 검사하여 인스턴스가 생성 및 실행중인 위치를 결정합니다.
- Nova-Commpute는 인스턴스를 생성하고 수명주기를 관리하기 위해 하이퍼 바이저와 통신하는 구성 요소입니다.
OpenStack 네트워킹 (중성자)
중성자를 자세히 설명하십시오
OpenStack의 핵심 구성 요소 중 하나 및 독립형 프로젝트- 중성자는 네트워킹을 서비스로 제공하는 데 중점을 두었습니다
- 중성자를 사용하면 사용자는 클라우드에서 네트워크를 설정하고 다양한 네트워크 서비스를 구성하고 관리 할 수 있습니다.
- 중성자는 다음과 상호 작용합니다.
- Nova -Nova는 Neutron과 통신하여 Nics를 네트워크에 연결합니다.
- Horizon- 대시 보드에서 네트워킹 엔터티를 지원하고 네트워킹 세부 사항이 포함 된 토폴로지보기를 제공합니다.
다음 구성 요소를 설명하십시오.- 중성자 DHCP-Agent
- 중성자 -L3 에이전트
- 중성자-미터 에이전트
- 중성자-*-Agtent
- 중성자 서버
Neutron-L3-Agent-L3/NAT 전달 (예 : VM에 대한 외부 네트워크 액세스 제공)- 중성자 DHCP-AGENT- DHCP 서비스
- 중성자-미터링 에이전트 -L3 트래픽 계량
- Neutron-*-Agtent- 각 컴퓨팅에서 로컬 vswitch 구성을 관리합니다 (선택한 플러그인 기반)
- Neutron -Server- 네트워킹 API를 노출시키고 필요한 경우 다른 플러그인에 요청을 전달합니다.
이러한 네트워크 유형을 설명하십시오.- 관리 네트워크
- 게스트 네트워크
- API 네트워크
- 외부 네트워크
관리 네트워크 - OpenStack 구성 요소 간의 내부 통신에 사용됩니다. 이 네트워크의 모든 IP 주소는 Datacetner 내에서만 액세스 할 수 있습니다.- 게스트 네트워크 - 인스턴스/VM 간의 통신에 사용됩니다
- API 네트워크 - 서비스 API 통신에 사용됩니다. 이 네트워크의 모든 IP 주소는 공개적으로 액세스 할 수 있습니다
- 외부 네트워크 - 공개 커뮤니케이션에 사용됩니다. 이 네트워크의 모든 IP 주소는 인터넷의 모든 사람이 액세스 할 수 있습니다.
순서대로 다음 엔티티를 제거해야합니다.
그 이유는 여러 가지가 있습니다. 예를 들어, 활성 포트가 할당 된 경우 라우터를 제거 할 수 없습니다.
공급자 네트워크 란 무엇입니까?
L2 및 L3에는 어떤 구성 요소와 서비스가 있습니까?
ML2 플러그인은 무엇입니까? 아키텍처를 설명하십시오
L2 에이전트는 무엇입니까? 어떻게 작동하며 무엇이 책임이 있습니까?
L3 에이전트는 무엇입니까? 어떻게 작동하며 무엇이 책임이 있습니까?
메타 데이터 에이전트가 무엇을 담당하는지 설명하십시오
어떤 네트워킹 엔터티 중성자가 지원 하는가?
OpenStack 네트워킹 문제를 어떻게 디버그합니까? (도구, 로그, ...)
OpenStack- 한눈에
한눈에 자세히 설명하십시오
Glance is the OpenStack image service- It handles requests related to instances disks and images
- Glance also used for creating snapshots for quick instances backups
- Users can use Glance to create new images or upload existing ones
Describe Glance architecture
glance-api - responsible for handling image API calls such as retrieval and storage. It consists of two APIs: 1. registry-api - responsible for internal requests 2. user API - can be accessed publicly- glance-registry - responsible for handling image metadata requests (eg size, type, etc). This component is private which means it's not available publicly
- metadata definition service - API for custom metadata
- database - for storing images metadata
- image repository - for storing images. This can be a filesystem, swift object storage, HTTP, etc.
OpenStack - Swift
Explain Swift in detail
Swift is Object Store service and is an highly available, distributed and consistent store designed for storing a lot of data- Swift is distributing data across multiple servers while writing it to multiple disks
- One can choose to add additional servers to scale the cluster. All while swift maintaining integrity of the information and data replications.
Can users store by default an object of 100GB in size?
Not by default. Object Storage API limits the maximum to 5GB per object but it can be adjusted.
Explain the following in regards to Swift:
Container - Defines a namespace for objects.- Account - Defines a namespace for containers
- Object - Data content (eg image, document, ...)
참인가 거짓인가? there can be two objects with the same name in the same container but not in two different containers
거짓. Two objects can have the same name if they are in different containers.
OpenStack - Cinder
Explain Cinder in detail
Cinder is OpenStack Block Storage service- It basically provides used with storage resources they can consume with other services such as Nova
- One of the most used implementations of storage supported by Cinder is LVM
- From user perspective this is transparent which means the user doesn't know where, behind the scenes, the storage is located or what type of storage is used
Describe Cinder's components
cinder-api - receives API requests- cinder-volume - manages attached block devices
- cinder-scheduler - responsible for storing volumes
OpenStack - Keystone
Can you describe the following concepts in regards to Keystone?- 역할
- Tenant/Project
- 서비스
- 엔드포인트
- 토큰
Role - A list of rights and privileges determining what a user or a project can perform- Tenant/Project - Logical representation of a group of resources isolated from other groups of resources. It can be an account, organization, ...
- Service - An endpoint which the user can use for accessing different resources
- Endpoint - a network address which can be used to access a certain OpenStack service
- Token - Used for access resources while describing which resources can be accessed by using a scope
What are the properties of a service? In other words, how a service is identified?
Using:
Explain the following: - PublicURL - InternalURL - AdminURL
PublicURL - Publicly accessible through public internet- InternalURL - Used for communication between services
- AdminURL - Used for administrative management
What is a service catalog?
A list of services and their endpoints
OpenStack Advanced - Services
Describe each of the following services- 스위프트
- Sahara
- Ironic
- 트로피
- Aodh
- Ceilometer
Swift - highly available, distributed, eventually consistent object/blob store- Sahara - Manage Hadoop Clusters
- Ironic - Bare Metal Provisioning
- Trove - Database as a service that runs on OpenStack
- Aodh - Alarms Service
- Ceilometer - Track and monitor usage
Identify the service/project used for each of the following:- Database as a service which runs on OpenStack
- Bare Metal Provisioning
- Track and monitor usage
- Alarms Service
- Manage Hadoop Clusters
- highly available, distributed, eventually consistent object/blob store
Database as a service which runs on OpenStack - Trove- Bare Metal Provisioning - Ironic
- Track and monitor usage - Ceilometer
- Alarms Service - Aodh
- Manage Hadoop Clusters
- Manage Hadoop Clusters - Sahara
- highly available, distributed, eventually consistent object/blob store - Swift
OpenStack Advanced - Keystone
Can you describe Keystone service in detail?
You can't have OpenStack deployed without Keystone- It Provides identity, policy and token services
- The authentication provided is for both users and services
- The authorization supported is token-based and user-based.
- There is a policy defined based on RBAC stored in a JSON file and each line in that file defines the level of access to apply
Describe Keystone architecture
There is a service API and admin API through which Keystone gets requests- Keystone has four backends:
- Token Backend - Temporary Tokens for users and services
- Policy Backend - Rules management and authorization
- Identity Backend - users and groups (either standalone DB, LDAP, ...)
- Catalog Backend - Endpoints
- It has pluggable environment where you can integrate with:
- KVS (Key Value Store)
- SQL
- 팸
- 멤캐시드
Describe the Keystone authentication process
Keystone gets a call/request and checks whether it's from an authorized user, using username, password and authURL- Once confirmed, Keystone provides a token.
- A token contains a list of user's projects so there is no to authenticate every time and a token can submitted instead
OpenStack Advanced - Compute (Nova)
What each of the following does?:- nova-api
- nova-compuate
- nova-conductor
- nova-cert
- nova-consoleauth
- nova-scheduler
nova-api - responsible for managing requests/calls- nova-compute - responsible for managing instance lifecycle
- nova-conductor - Mediates between nova-compute and the database so nova-compute doesn't access it directly
What types of Nova proxies are you familiar with?
Nova-novncproxy - Access through VNC connections- Nova-spicehtml5proxy - Access through SPICE
- Nova-xvpvncproxy - Access through a VNC connection
OpenStack Advanced - Networking (Neutron)
Explain BGP dynamic routing
What is the role of network namespaces in OpenStack?
OpenStack Advanced - Horizon
Can you describe Horizon in detail?
Django-based project focusing on providing an OpenStack dashboard and the ability to create additional customized dashboards- You can use it to access the different OpenStack services resources - instances, images, networks, ...
- By accessing the dashboard, users can use it to list, create, remove and modify the different resources
- It's also highly customizable and you can modify or add to it based on your needs
What can you tell about Horizon architecture?
API is backward compatible- There are three type of dashboards: user, system and settings
- It provides core support for all OpenStack core projects such as Neutron, Nova, etc. (out of the box, no need to install extra packages or plugins)
- Anyone can extend the dashboards and add new components
- Horizon provides templates and core classes from which one can build its own dashboard
인형
What is Puppet? How does it works?
- Puppet is a configuration management tool ensuring that all systems are configured to a desired and predictable state.
Explain Puppet architecture
- Puppet has a primary-secondary node architecture. The clients are distributed across the network and communicate with the primary-secondary environment where Puppet modules are present. The client agent sends a certificate with its ID to the server; the server then signs that certificate and sends it back to the client. This authentication allows for secure and verifiable communication between the client and the master.
Can you compare Puppet to other configuration management tools? Why did you chose to use Puppet?
- Puppet is often compared to other configuration management tools like Chef, Ansible, SaltStack, and cfengine. The choice to use Puppet often depends on an organization's needs, such as ease of use, scalability, and community support.
Explain the following:
Modules - are a collection of manifests, templates, and files- Manifests - are the actual codes for configuring the clients
- Node - allows you to assign specific configurations to specific nodes
Explain Facter
- Facter is a standalone tool in Puppet that collects information about a system and its configuration, such as the operating system, IP addresses, memory, and network interfaces. This information can be used in Puppet manifests to make decisions about how resources should be managed, and to customize the behavior of Puppet based on the characteristics of the system. Facter is integrated into Puppet, and its facts can be used within Puppet manifests to make decisions about resource management.
What is MCollective?
- MCollective is a middleware system that integrates with Puppet to provide orchestration, remote execution, and parallel job execution capabilities.
Do you have experience with writing modules? Which module have you created and for what?
Explain what is Hiera
- Hiera is a hierarchical data store in Puppet that is used to separate data from code, allowing data to be more easily separated, managed, and reused.
탄력 있는
What is the Elastic Stack?
The Elastic Stack consists of:
- 엘라스틱서치
- 키바나
- 로그스태시
- Beats
- Elastic Hadoop
- APM Server
Elasticsearch, Logstash and Kibana are also known as the ELK stack.
Explain what is Elasticsearch
From the official docs:
"Elasticsearch is a distributed document store. Instead of storing information as rows of columnar data, Elasticsearch stores complex data structures that have been serialized as JSON documents"
What is Logstash?
From the blog:
"Logstash is a powerful, flexible pipeline that collects, enriches and transports data. It works as an extract, transform & load (ETL) tool for collecting log messages."
Explain what beats are
Beats are lightweight data shippers. These data shippers installed on the client where the data resides. Examples of beats: Filebeat, Metricbeat, Auditbeat. There are much more.
What is Kibana?
From the official docs:
"Kibana is an open source analytics and visualization platform designed to work with Elasticsearch. You use Kibana to search, view, and interact with data stored in Elasticsearch indices. You can easily perform advanced data analysis and visualize your data in a variety of charts, tables, and maps."
Describe what happens from the moment an app logged some information until it's displayed to the user in a dashboard when the Elastic stack is used
The process may vary based on the chosen architecture and the processing you may want to apply to the logs. One possible workflow is:
The data logged by the application is picked by filebeat and sent to logstash- Logstash process the log based on the defined filters. Once done, the output is sent to Elasticsearch
- Elasticsearch stores the document it got and the document is indexed for quick future access
- The user creates visualizations in Kibana which based on the indexed data
- The user creates a dashboard which composed out of the visualization created in the previous step
엘라스틱서치
What is a data node?
This is where data is stored and also where different processing takes place (eg when you search for a data).
What is a master node?
Part of a master node responsibilities:
- Track the status of all the nodes in the cluster
- Verify replicas are working and the data is available from every data node.
- No hot nodes (no data node that works much harder than other nodes)
While there can be multiple master nodes in reality only of them is the elected master node.
What is an ingest node?
A node which responsible for processing the data according to ingest pipeline. In case you don't need to use logstash then this node can receive data from beats and process it, similarly to how it can be processed in Logstash.
What is Coordinating only node?
From the official docs:
Coordinating only nodes can benefit large clusters by offloading the coordinating node role from data and master-eligible nodes. They join the cluster and receive the full cluster state, like every other node, and they use the cluster state to route requests directly to the appropriate place(s).
How data is stored in Elasticsearch?
Data is stored in an index- The index is spread across the cluster using shards
What is an Index?
Index in Elasticsearch is in most cases compared to a whole database from the SQL/NoSQL world.
You can choose to have one index to hold all the data of your app or have multiple indices where each index holds different type of your app (eg index for each service your app is running).
The official docs also offer a great explanation (in general, it's really good documentation, as every project should have):
"An index can be thought of as an optimized collection of documents and each document is a collection of fields, which are the key-value pairs that contain your data"
Explain Shards
An index is split into shards and documents are hashed to a particular shard. Each shard may be on a different node in a cluster and each one of the shards is a self contained index.
This allows Elasticsearch to scale to an entire cluster of servers.
What is an Inverted Index?
From the official docs:
"An inverted index lists every unique word that appears in any document and identifies all of the documents each word occurs in."
What is a Document?
Continuing with the comparison to SQL/NoSQL a Document in Elasticsearch is a row in table in the case of SQL or a document in a collection in the case of NoSQL. As in NoSQL a document is a JSON object which holds data on a unit in your app. What is this unit depends on the your app. If your app related to book then each document describes a book. If you are app is about shirts then each document is a shirt.
You check the health of your elasticsearch cluster and it's red. 그것은 무엇을 의미합니까? What can cause the status to be yellow instead of green?
Red means some data is unavailable in your cluster. Some shards of your indices are unassigned. There are some other states for the cluster. Yellow means that you have unassigned shards in the cluster. You can be in this state if you have single node and your indices have replicas. Green means that all shards in the cluster are assigned to nodes and your cluster is healthy.
참인가 거짓인가? Elasticsearch indexes all data in every field and each indexed field has the same data structure for unified and quick query ability
거짓. From the official docs:
"Each indexed field has a dedicated, optimized data structure. For example, text fields are stored in inverted indices, and numeric and geo fields are stored in BKD trees."
What reserved fields a document has?
Explain Mapping
What are the advantages of defining your own mapping? (or: when would you use your own mapping?)
You can optimize fields for partial matching- You can define custom formats of known fields (eg date)
- You can perform language-specific analysis
Explain Replicas
In a network/cloud environment where failures can be expected any time, it is very useful and highly recommended to have a failover mechanism in case a shard/node somehow goes offline or disappears for whatever reason. To this end, Elasticsearch allows you to make one or more copies of your index's shards into what are called replica shards, or replicas for short.
Can you explain Term Frequency & Document Frequency?
Term Frequency is how often a term appears in a given document and Document Frequency is how often a term appears in all documents. They both are used for determining the relevance of a term by calculating Term Frequency / Document Frequency.
You check "Current Phase" under "Index lifecycle management" and you see it's set to "hot". 그것은 무엇을 의미합니까?
"The index is actively being written to". More about the phases here
What this command does? curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'{ "name": "John Doe" }'
It creates customer index if it doesn't exists and adds a new document with the field name which is set to "John Dow". Also, if it's the first document it will get the ID 1.
What will happen if you run the previous command twice? What about running it 100 times?
If name value was different then it would update "name" to the new value- In any case, it bumps version field by one
What is the Bulk API? What would you use it for?
Bulk API is used when you need to index multiple documents. For high number of documents it would be significantly faster to use rather than individual requests since there are less network roundtrips.
Query DSL
Explain Elasticsearch query syntax (Booleans, Fields, Ranges)
Explain what is Relevance Score
Explain Query Context and Filter Context
From the official docs:
"In the query context, a query clause answers the question “How well does this document match this query clause?” Besides deciding whether or not the document matches, the query clause also calculates a relevance score in the _score meta-field."
"In a filter context, a query clause answers the question “Does this document match this query clause?” The answer is a simple Yes or No — no scores are calculated. Filter context is mostly used for filtering structured data"
Describe how would an architecture of production environment with large amounts of data would be different from a small-scale environment
There are several possible answers for this question. One of them is as follows:
A small-scale architecture of elastic will consist of the elastic stack as it is. This means we will have beats, logstash, elastcsearch and kibana.
A production environment with large amounts of data can include some kind of buffering component (eg Reddis or RabbitMQ) and also security component such as Nginx.
로그스태시
What are Logstash plugins? What plugins types are there?
Input Plugins - how to collect data from different sources- Filter Plugins - processing data
- Output Plugins - push data to different outputs/services/platforms
What is grok?
A logstash plugin which modifies information in one format and immerse it in another.
How grok works?
What grok patterns are you familiar with?
What is `_grokparsefailure?`
How do you test or debug grok patterns?
What are Logstash Codecs? What codecs are there?
키바나
What can you find under "Discover" in Kibana?
The raw data as it is stored in the index. You can search and filter it.
You see in Kibana, after clicking on Discover, "561 hits". 그것은 무엇을 의미합니까?
Total number of documents matching the search results. If not query used then simply the total number of documents.
What can you find under "Visualize"?
"Visualize" is where you can create visual representations for your data (pie charts, graphs, ...)
What visualization types are supported/included in Kibana?
What visualization type would you use for statistical outliers
Describe in detail how do you create a dashboard in Kibana
Filebeat
What is Filebeat?
Filebeat is used to monitor the logging directories inside of VMs or mounted as a sidecar if exporting logs from containers, and then forward these logs onward for further processing, usually to logstash.
If one is using ELK, is it a must to also use filebeat? In what scenarios it's useful to use filebeat?
Filebeat is a typical component of the ELK stack, since it was developed by Elastic to work with the other products (Logstash and Kibana). It's possible to send logs directly to logstash, though this often requires coding changes for the application. Particularly for legacy applications with little test coverage, it might be a better option to use filebeat, since you don't need to make any changes to the application code.
What is a harvester?
Read here
참인가 거짓인가? a single harvester harvest multiple files, according to the limits set in filebeat.yml
거짓. One harvester harvests one file.
What are filebeat modules?
These are pre-configured modules for specific types of logging locations (eg, Traefik, Fargate, HAProxy) to make it easy to configure forwarding logs using filebeat. They have different configurations based on where you're collecting logs from.
Elastic Stack
How do you secure an Elastic Stack?
You can generate certificates with the provided elastic utils and change configuration to enable security using certificates model.
분산
Explain Distributed Computing (or Distributed System)
According to Martin Kleppmann:
"Many processes running on many machines...only message-passing via an unreliable network with variable delays, and the system may suffer from partial failures, unreliable clocks, and process pauses."
Another definition: "Systems that are physically separated, but logically connected"
What can cause a system to fail?
Do you know what is "CAP theorem"? (aka as Brewer's theorem)
According to the CAP theorem, it's not possible for a distributed data store to provide more than two of the following at the same time:
Availability: Every request receives a response (it doesn't has to be the most recent data)- Consistency: Every request receives a response with the latest/most recent data
- Partition tolerance: Even if some the data is lost/dropped, the system keeps running
What are the problems with the following design? How to improve it?
1. The transition can take time. In other words, noticeable downtime. 2. Standby server is a waste of resources - if first application server is running then the standby does nothing What are the problems with the following design? How to improve it?
Issues: If load balancer dies , we lose the ability to communicate with the application. Ways to improve:
Add another load balancer- Use DNS A record for both load balancers
- Use message queue
What is "Shared-Nothing" architecture?
It's an architecture in which data is and retrieved from a single, non-shared, source usually exclusively connected to one node as opposed to architectures where the request can get to one of many nodes and the data will be retrieved from one shared location (storage , 메모리, ...).
Explain the Sidecar Pattern (Or sidecar proxy)
Misc
이름 | 주제 | Objective & Instructions | 해결책 | 댓글 |
---|
Highly Available "Hello World" | 운동 | 해결책 | | |
What happens when you type in a URL in an address bar in a browser?
- The browser searches for the record of the domain name IP address in the DNS in the following order:
- Browser cache
- Operating system cache
- The DNS server configured on the user's system (can be ISP DNS, public DNS, ...)
- If it couldn't find a DNS record locally, a full DNS resolution is started.
- It connects to the server using the TCP protocol
- The browser sends an HTTP request to the server
- The server sends an HTTP response back to the browser
- The browser renders the response (eg HTML)
- The browser then sends subsequent requests as needed to the server to get the embedded links, javascript, images in the HTML and then steps 3 to 5 are repeated.
TODO: add more details!
API
Explain what is an API
I like this definition from blog.christianposta.com:
"An explicitly and purposefully defined interface designed to be invoked over a network that enables software developers to get programmatic access to data and functionality within an organization in a controlled and comfortable way."
What is an API specification?
From swagger.io:
"An API specification provides a broad understanding of how an API behaves and how the API links with other APIs. It explains how the API functions and the results to expect when using the API"
참인가 거짓인가? API Definition is the same as API Specification
거짓. From swagger.io:
"An API definition is similar to an API specification in that it provides an understanding of how an API is organized and how the API functions. But the API definition is aimed at machine consumption instead of human consumption of APIs."
What is an API gateway?
An API gateway is like the gatekeeper that controls how different parts talk to each other and how information is exchanged between them.
The API gateway provides a single point of entry for all clients, and it can perform several tasks, including routing requests to the appropriate backend service, load balancing, security and authentication, rate limiting, caching, and monitoring.
By using an API gateway, organizations can simplify the management of their APIs, ensure consistent security and governance, and improve the performance and scalability of their backend services. They are also commonly used in microservices architectures, where there are many small, independent services that need to be accessed by different clients.
What are the advantages of using/implementing an API gateway?
장점:
- Simplifies API management: Provides a single entry point for all requests, which simplifies the management and monitoring of multiple APIs.
- Improves security: Able to implement security features like authentication, authorization, and encryption to protect the backend services from unauthorized access.
- Enhances scalability: Can handle traffic spikes and distribute requests to backend services in a way that maximizes resource utilization and improves overall system performance.
- Enables service composition: Can combine different backend services into a single API, providing more granular control over the services that clients can access.
- Facilitates integration with external systems: Can be used to expose internal services to external partners or customers, making it easier to integrate with external systems and enabling new business models.
What is a Payload in API?
What is Automation? How it's related or different from Orchestration?
Automation is the act of automating tasks to reduce human intervention or interaction in regards to IT technology and systems.
While automation focuses on a task level, Orchestration is the process of automating processes and/or workflows which consists of multiple tasks that usually across multiple systems.
Tell me about interesting bugs you've found and also fixed
What is a Debugger and how it works?
What services an application might have?
권한 부여- 벌채 반출
- 입증
- Ordering
- 프런트엔드
- Back-end ...
What is Metadata?
Data about data. Basically, it describes the type of information that an underlying data will hold.
You can use one of the following formats: JSON, YAML, XML. Which one would you use? 왜?
I can't answer this for you :)
What's KPI?
What's OKR?
What's DSL (Domain Specific Language)?
Domain Specific Language (DSLs) are used to create a customised language that represents the domain such that domain experts can easily interpret it.
What's the difference between KPI and OKR?
YAML
What is YAML?
Data serialization language used by many technologies today like Kubernetes, Ansible, etc.
참인가 거짓인가? Any valid JSON file is also a valid YAML file
진실. Because YAML is superset of JSON.
What is the format of the following data? {
applications: [
{
name: "my_app",
language: "python",
version: 20.17
}
]
}
JSON What is the format of the following data? applications:
- app: "my_app"
language: "python"
version: 20.17
YAML How to write a multi-line string with YAML? What use cases is it good for?
someMultiLineString: | look mama I can write a multi-line string I love YAML
It's good for use cases like writing a shell script where each line of the script is a different command.
What is the difference between someMultiLineString: |
to someMultiLineString: >
?
using >
will make the multi-line string to fold into a single line
someMultiLineString: >
This is actually
a single line
do not let appearances fool you
What are placeholders in YAML?
They allow you reference values instead of directly writing them and it is used like this:
username: {{ my.user_name }}
How can you define multiple YAML components in one file?
Using this: ---
For Examples:
document_number: 1
---
document_number: 2
펌웨어
Explain what is a firmware
Wikipedia: "In computing, firmware is a specific class of computer software that provides the low-level control for a device's specific hardware. Firmware, such as the BIOS of a personal computer, may contain basic functions of a device, and may provide hardware abstraction services to higher-level software such as operating systems."
카산드라
When running a cassandra cluster, how often do you need to run nodetool repair in order to keep the cluster consistent?- Within the columnFamily GC-grace Once a week
- Less than the compacted partition minimum bytes
- Depended on the compaction strategy
HTTP
What is HTTP?
Avinetworks: HTTP stands for Hypertext Transfer Protocol. HTTP uses TCP port 80 to enable internet communication. It is part of the Application Layer (L7) in OSI Model.
Describe HTTP request lifecycle
Resolve host by request to DNS resolver- Client SYN
- Server SYN+ACK
- Client SYN
- HTTP 요청
- HTTP response
참인가 거짓인가? HTTP is stateful
거짓. It doesn't maintain state for incoming request.
How HTTP request looks like?
It consists of:
Request line - request type- Headers - content info like length, encoding, etc.
- Body (not always included)
What HTTP method types are there?
얻다- 우편
- 머리
- 놓다
- 삭제
- 연결하다
- 옵션
- 추적하다
What HTTP response codes are there?
1xx - informational- 2xx - Success
- 3xx - Redirect
- 4xx - Error, client fault
- 5xx - Error, server fault
What is HTTPS?
HTTPS is a secure version of the HTTP protocol used to transfer data between a web browser and a web server. It encrypts the communication using SSL/TLS encryption to ensure that the data is private and secure.
Learn more: https://www.cloudflare.com/learning/ssl/why-is-http-not-secure/
Explain HTTP Cookies
HTTP is stateless. To share state, we can use Cookies.
TODO: explain what is actually a Cookie
What is HTTP Pipelining?
You get "504 Gateway Timeout" error from an HTTP server. 그것은 무엇을 의미합니까?
The server didn't receive a response from another server it communicates with in a timely manner.
What is a proxy?
A proxy is a server that acts as a middleman between a client device and a destination server. It can help improve privacy, security, and performance by hiding the client's IP address, filtering content, and caching frequently accessed data.
- Proxies can be used for load balancing, distributing traffic across multiple servers to help prevent server overload and improve website or application performance. They can also be used for data analysis, as they can log requests and traffic, providing useful insights into user behavior and preferences.
What is a reverse proxy?
A reverse proxy is a type of proxy server that sits between a client and a server, but it is used to manage traffic going in the opposite direction of a traditional forward proxy. In a forward proxy, the client sends requests to the proxy server, which then forwards them to the destination server. However, in a reverse proxy, the client sends requests to the destination server, but the requests are intercepted by the reverse proxy before they reach the server.
- They're commonly used to improve web server performance, provide high availability and fault tolerance, and enhance security by preventing direct access to the back-end server. They are often used in large-scale web applications and high-traffic websites to manage and distribute requests to multiple servers, resulting in improved scalability and reliability.
When you publish a project, you usually publish it with a license. What types of licenses are you familiar with and which one do you prefer to use?
Explain what is "X-Forwarded-For"
Wikipedia: "The X-Forwarded-For (XFF) HTTP header field is a common method for identifying the originating IP address of a client connecting to a web server through an HTTP proxy or load balancer."
Load Balancers
What is a load balancer?
A load balancer accepts (or denies) incoming network traffic from a client, and based on some criteria (application related, network, etc.) it distributes those communications out to servers (at least one).
Why to used a load balancer?
Scalability - using a load balancer, you can possibly add more servers in the backend to handle more requests/traffic from the clients, as opposed to using one server.- Redundancy - if one server in the backend dies, the load balancer will keep forwarding the traffic/requests to the second server so users won't even notice one of the servers in the backend is down.
What load balancer techniques/algorithms are you familiar with?
Round Robin- Weighted Round Robin
- Least Connection
- Weighted Least Connection
- Resource Based
- Fixed Weighting
- Weighted Response Time
- Source IP Hash
- URL Hash
What are the drawbacks of round robin algorithm in load balancing?
A simple round robin algorithm knows nothing about the load and the spec of each server it forwards the requests to. It is possible, that multiple heavy workloads requests will get to the same server while other servers will got only lightweight requests which will result in one server doing most of the work, maybe even crashing at some point because it unable to handle all the heavy workloads requests by its own.- Each request from the client creates a whole new session. This might be a problem for certain scenarios where you would like to perform multiple operations where the server has to know about the result of operation so basically, being sort of aware of the history it has with the client. In round robin, first request might hit server X, while second request might hit server Y and ask to continue processing the data that was processed on server X already.
What is an Application Load Balancer?
In which scenarios would you use ALB?
At what layers a load balancer can operate?
L4 and L7
Can you perform load balancing without using a dedicated load balancer instance?
Yes, you can use DNS for performing load balancing.
What is DNS load balancing? What its advantages? When would you use it?
Load Balancers - Sticky Sessions
What are sticky sessions? What are their pros and cons?
Recommended read:
단점:
Can cause uneven load on instance (since requests routed to the same instances) Pros:- Ensures in-proc sessions are not lost when a new request is created
Name one use case for using sticky sessions
You would like to make sure the user doesn't lose the current session data.
What sticky sessions use for enabling the "stickiness"?
쿠키. There are application based cookies and duration based cookies.
Explain application-based cookies
Generated by the application and/or the load balancer- Usually allows to include custom data
Explain duration-based cookies
Generated by the load balancer- Session is not sticky anymore once the duration elapsed
Load Balancers - Load Balancing Algorithms
Explain each of the following load balancing techniques- Round Robin
- Weighted Round Robin
- Least Connection
- Weighted Least Connection
- Resource Based
- Fixed Weighting
- Weighted Response Time
- Source IP Hash
- URL Hash
Explain use case for connection draining?
To ensure that a Classic Load Balancer stops sending requests to instances that are de-registering or unhealthy, while keeping the existing connections open, use connection draining. This enables the load balancer to complete in-flight requests made to instances that are de-registering or unhealthy. The maximum timeout value can be set between 1 and 3,600 seconds on both GCP and AWS.
라이센스
Are you familiar with "Creative Commons"? 당신은 그것에 대해 무엇을 알고 있나요?
The Creative Commons license is a set of copyright licenses that allow creators to share their work with the public while retaining some control over how it can be used. The license was developed as a response to the restrictive standards of traditional copyright laws, which limited access of creative works. Its creators to choose the terms under which their works can be shared, distributed, and used by others. They're six main types of Creative Commons licenses, each with different levels of restrictions and permissions, the six licenses are:
- Attribution (CC BY): Allows others to distribute, remix, and build upon the work, even commercially, as long as they credit the original creator.
- Attribution-ShareAlike (CC BY-SA): Allows others to remix and build upon the work, even commercially, as long as they credit the original creator and release any new creations under the same license.
- Attribution-NoDerivs (CC BY-ND): Allows others to distribute the work, even commercially, but they cannot remix or change it in any way and must credit the original creator.
- Attribution-NonCommercial (CC BY-NC): Allows others to remix and build upon the work, but they cannot use it commercially and must credit the original creator.
- Attribution-NonCommercial-ShareAlike (CC BY-NC-SA): Allows others to remix and build upon the work, but they cannot use it commercially, must credit the original creator, and must release any new creations under the same license.
- Attribution-NonCommercial-NoDerivs (CC BY-NC-ND): Allows others to download and share the work, but they cannot use it commercially, remix or change it in any way, and must credit the original creator.
Simply stated, the Creative Commons licenses are a way for creators to share their work with the public while retaining some control over how it can be used. The licenses promote creativity, innovation, and collaboration, while also respecting the rights of creators while still encouraging the responsible use of creative works.
More information: https://creativecommons.org/licenses/
Explain the differences between copyleft and permissive licenses
In Copyleft, any derivative work must use the same licensing while in permissive licensing there are no such condition. GPL-3 is an example of copyleft license while BSD is an example of permissive license.
무작위의
How a search engine works?
How auto completion works?
What is faster than RAM?
CPU cache. 원천
What is a memory leak?
A memory leak is a programming error that occurs when a program fails to release memory that is no longer needed, causing the program to consume increasing amounts of memory over time.
The leaks can lead to a variety of problems, including system crashes, performance degradation, and instability. Usually occurring after failed maintenance on older systems and compatibility with new components over time.
What is your favorite protocol?
SSH HTTP DHCP DNS ...
What is Cache API?
What is the C10K problem? Is it relevant today?
https://idiallo.com/blog/c10k-2016
저장
What types of storage are there?
Explain Object Storage
Data is divided to self-contained objects- Objects can contain metadata
What are the pros and cons of object storage?
장점:
Usually with object storage, you pay for what you use as opposed to other storage types where you pay for the storage space you allocate- Scalable storage: Object storage mostly based on a model where what you use, is what you get and you can add storage as need Cons:
- Usually performs slower than other types of storage
- No granular modification: to change an object, you have re-create it
What are some use cases for using object storage?
Explain File Storage
File Storage used for storing data in files, in a hierarchical structure- Some of the devices for file storage: hard drive, flash drive, cloud-based file storage
- Files usually organized in directories
What are the pros and cons of File Storage?
장점:
Users have full control of their own files and can run variety of operations on the files: delete, read, write and move.- Security mechanism allows for users to have a better control at things such as file locking
What are some examples of file storage?
Local filesystem Dropbox Google Drive
What types of storage devices are there?
Explain IOPS
Explain storage throughput
What is a filesystem?
A file system is a way for computers and other electronic devices to organize and store data files. It provides a structure that helps to organize data into files and directories, making it easier to find and manage information. A file system is crucial for providing a way to store and manage data in an organized manner.
Commonly used filed systems: Windows:
Mac OS:
Explain Dark Data
Explain MBR
Questions you CAN ask
A list of questions you as a candidate can ask the interviewer during or after the interview. These are only a suggestion, use them carefully. Not every interviewer will be able to answer these (or happy to) which should be perhaps a red flag warning for your regarding working in such place but that's really up to you.
What do you like about working here?
How does the company promote personal growth?
What is the current level of technical debt you are dealing with?
Be careful when asking this question - all companies, regardless of size, have some level of tech debt. Phrase the question in the light that all companies have the deal with this, but you want to see the current pain points they are dealing with
This is a great way to figure how managers deal with unplanned work, and how good they are at setting expectations with projects.
Why I should NOT join you? (or 'what you don't like about working here?')
What was your favorite project you've worked on?
This can give you insights in some of the cool projects a company is working on, and if you would enjoy working on projects like these. This is also a good way to see if the managers are allowing employees to learn and grow with projects outside of the normal work you'd do.
If you could change one thing about your day to day, what would it be?
Similar to the tech debt question, this helps you identify any pain points with the company. Additionally, it can be a great way to show how you'd be an asset to the team.
For Example, if they mention they have problem X, and you've solved that in the past, you can show how you'd be able to mitigate that problem.
Let's say that we agree and you hire me to this position, after X months, what do you expect that I have achieved?
Not only this will tell you what is expected from you, it will also provide big hint on the type of work you are going to do in the first months of your job.
테스트
Explain white-box testing
Explain black-box testing
What are unit tests?
Unit test are a software testing technique that involves systimatically breaking down a system and testing each individual part of the assembly. These tests are automated and can be run repeatedly to allow developers to catch edge case scenarios or bugs quickly while developing.
The main objective of unit tests are to verify each function is producing proper outputs given a set of inputs.
What types of tests would you run to test a web application?
Explain test harness?
What is A/B testing?
What is network simulation and how do you perform it?
What types of performances tests are you familiar with?
Explain the following types of tests:- 부하 테스트
- Stress Testing
- 용량 테스트
- Volume Testing
- Endurance Testing
Regex
Given a text file, perform the following exercises
발췌
Extract all the numbers
Extract the first word of each line
"^w+" Bonus: extract the last word of each line
-
"w+(?=W*$)" (in most cases, depends on line formatting)
Extract all the IP addresses
- "b(?:d{1,3} .){3}d{1,3}b" IPV4:(This format looks for 1 to 3 digit sequence 3 times)
Extract dates in the format of yyyy-mm-dd or yyyy-dd-mm
Extract email addresses
- "b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+ .[A-Za-z]{2,}b"
바꾸다
Replace tabs with four spaces
Replace 'red' with 'green'
시스템 설계
Explain what a "single point of failure" is.
A "single point of failure", in a system or organization, if it were to fail would cause the entire system to fail or significantly disrupt it's operation. In other words, it is a vulnerability where there is no backup in place to compensate for the failure. What is CDN?
CDN (Content Delivery Network) responsible for distributing content geographically. Part of it, is what is known as edge locations, aka cache proxies, that allows users to get their content quickly due to cache features and geographical distribution.
Explain Multi-CDN
In single CDN, the whole content is originated from content delivery network.
In multi-CDN, content is distributed across multiple different CDNs, each might be on a completely different provider/cloud.
What are the benefits of Multi-CDN over a single CDN?
Resiliency: Relying on one CDN means no redundancy. With multiple CDNs you don't need to worry about your CDN being down- Flexibility in Costs: Using one CDN enforces you to specific rates of that CDN. With multiple CDNs you can take into consideration using less expensive CDNs to deliver the content.
- Performance: With Multi-CDN there is bigger potential in choosing better locations which more close to the client asking the content
- Scale: With multiple CDNs, you can scale services to support more extreme conditions
Explain "3-Tier Architecture" (including pros and cons)
A "3-Tier Architecture" is a pattern used in software development for designing and structuring applications. It divides the application into 3 interconnected layers: Presentation, Business logic and Data storage. PROS: * Scalability * Security * Reusability CONS: * Complexity * Performance overhead * Cost and development time Explain Mono-repo vs. Multi-repo.What are the cons and pros of each approach?
In a Mono-repo, all the code for an organization is stored in a single,centralized repository. PROS (Mono-repo): * Unified tooling * Code Sharing CONS (Mono-repo): * Increased complexity * Slower cloning In a Multi-repo setup, each component is stored in it's own separate repository. Each repository has it's own version control history. PROS (Multi-repo):
Simpler to manage- Different teams and developers can work on different parts of the project independently, making parallel development easier. CONS (Multi-repo):
- Code duplication
- Integration challenges
What are the drawbacks of monolithic architecture?
Not suitable for frequent code changes and the ability to deploy new features- Not designed for today's infrastructure (like public clouds)
- Scaling a team to work monolithic architecture is more challenging
- If a single component in this architecture fails, then the entire application fails.
What are the advantages of microservices architecture over a monolithic architecture?
Each of the services individually fail without escalating into an application-wide outage.- Each service can be developed and maintained by a separate team and this team can choose its own tools and coding language
What's a service mesh?
It is a layer that facilitates communication management and control between microservices in a containerized application. It handles tasks such as load balancing, encryption, and monitoring. Explain "Loose Coupling"
In "Loose Coupling", components of a system communicate with each other with a little understanding of each other's internal workings. This improves scalability and ease of modification in complex systems. What is a message queue? When is it used?
It is a communication mechanism used in distributed systems to enable asynchronous communication between different components. It is generally used when the systems use a microservices approach. 확장성
Explain Scalability
The ability easily grow in size and capacity based on demand and usage.
Explain Elasticity
The ability to grow but also to reduce based on what is required
Explain Disaster Recovery
Disaster recovery is the process of restoring critical business systems and data after a disruptive event. The goal is to minimize the impact and resume normal business activities quickly. This involves creating a plan, testing it, backing up critical data, and storing it in safe locations. In case of a disaster, the plan is then executed, backups are restored, and systems are hopefully brought back online. The recovery process may take hours or days depending on the damages of infrastructure. This makes business planning important, as a well-designed and tested disaster recovery plan can minimize the impact of a disaster and keep operations going.
Explain Fault Tolerance and High Availability
Fault Tolerance - The ability to self-heal and return to normal capacity. Also the ability to withstand a failure and remain functional.
High Availability - Being able to access a resource (in some use cases, using different platforms)
What is the difference between high availability and Disaster Recovery?
wintellect.com: "High availability, simply put, is eliminating single points of failure and disaster recovery is the process of getting a system back to an operational state when a system is rendered inoperative. In essence, disaster recovery picks up when high availability fails, so HA first."
Explain Vertical Scaling
Vertical Scaling is the process of adding resources to increase power of existing servers. For example, adding more CPUs, adding more RAM, etc.
What are the disadvantages of Vertical Scaling?
With vertical scaling alone, the component still remains a single point of failure. In addition, it has hardware limit where if you don't have more resources, you might not be able to scale vertically.
Which type of cloud services usually support vertical scaling?
Databases, cache. It's common mostly for non-distributed systems.
Explain Horizontal Scaling
Horizontal Scaling is the process of adding more resources that will be able handle requests as one unit
What is the disadvantage of Horizontal Scaling? What is often required in order to perform Horizontal Scaling?
A load balancer. You can add more resources, but if you would like them to be part of the process, you have to serve them the requests/responses. Also, data inconsistency is a concern with horizontal scaling.
Explain in which use cases will you use vertical scaling and in which use cases you will use horizontal scaling
Explain Resiliency and what ways are there to make a system more resilient
Explain "Consistent Hashing"
How would you update each of the services in the following drawing without having app (foo.com) downtime?
What is the problem with the following architecture and how would you fix it?
The load on the producers or consumers may be high which will then cause them to hang or crash.
Instead of working in "push mode", the consumers can pull tasks only when they are ready to handle them. It can be fixed by using a streaming platform like Kafka, Kinesis, etc. This platform will make sure to handle the high load/traffic and pass tasks/messages to consumers only when the ready to get them.
Users report that there is huge spike in process time when adding little bit more data to process as an input. What might be the problem?
How would you scale the architecture from the previous question to hundreds of users?
은닉처
What is "cache"? In which cases would you use it?
What is "distributed cache"?
What is a "cache replacement policy"?
Take a look here
Which cache replacement policies are you familiar with?
You can find a list here
Explain the following cache policies:
Read about it here
Why not writing everything to cache instead of a database/datastore?
Caching and databases serve different purposes and are optimized for different use cases. Caching is used to speed up read operations by storing frequently accessed data in memory or on a fast storage medium. By keeping data close to the application, caching reduces the latency and overhead of accessing data from a slower, more distant storage system such as a database or disk.
On the other hand, databases are optimized for storing and managing persistent data. Databases are designed to handle concurrent read and write operations, enforce consistency and integrity constraints, and provide features such as indexing and querying.
마이그레이션
How you prepare for a migration? (or plan a migration)
You can mention:
roll-back & roll-forward cut over dress rehearsals DNS redirection
Explain "Branch by Abstraction" technique
Design a system
Can you design a video streaming website?
Can you design a photo upload website?
How would you build a URL shortener?
More System Design Questions
Additional exercises can be found in system-design-notebook repository.
하드웨어
What is a CPU?
A central processing unit (CPU) performs basic arithmetic, logic, controlling, and input/output (I/O) operations specified by the instructions in the program. This contrasts with external components such as main memory and I/O circuitry, and specialized processors such as graphics processing units (GPUs).
What is RAM?
RAM (Random Access Memory) is the hardware in a computing device where the operating system (OS), application programs and data in current use are kept so they can be quickly reached by the device's processor. RAM is the main memory in a computer. It is much faster to read from and write to than other kinds of storage, such as a hard disk drive (HDD), solid-state drive (SSD) or optical drive.
What is a GPU?
A GPU, or Graphics Processing Unit, is a specialized electronic circuit designed to expedite image and video processing for display on a computer screen.
What is an embedded system?
An embedded system is a computer system - a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts.
Can you give an example of an embedded system?
A common example of an embedded system is a microwave oven's digital control panel, which is managed by a microcontroller.
When committed to a certain goal, Raspberry Pi can serve as an embedded system.
What types of storage are there?
There are several types of storage, including hard disk drives (HDDs), solid-state drives (SSDs), and optical drives (CD/DVD/Blu-ray). Other types of storage include USB flash drives, memory cards, and network-attached storage (NAS).
What are some considerations DevOps teams should keep in mind when selecting hardware for their job?
Choosing the right DevOps hardware is essential for ensuring streamlined CI/CD pipelines, timely feedback loops, and consistent service availability. Here's a distilled guide on what DevOps teams should consider:
Understanding Workloads :
- CPU : Consider the need for multi-core or high-frequency CPUs based on your tasks.
- RAM : Enough memory is vital for activities like large-scale coding or intensive automation.
- Storage : Evaluate storage speed and capacity. SSDs might be preferable for swift operations.
Expandability :
- Horizontal Growth : Check if you can boost capacity by adding more devices.
- Vertical Growth : Determine if upgrades (like RAM, CPU) to individual machines are feasible.
Connectivity Considerations :
- Data Transfer : Ensure high-speed network connections for activities like code retrieval and data transfers.
- Speed : Aim for low-latency networks, particularly important for distributed tasks.
- Backup Routes : Think about having backup network routes to avoid downtimes.
Consistent Uptime :
- Plan for hardware backups like RAID configurations, backup power sources, or alternate network connections to ensure continuous service.
System Compatibility :
- Make sure your hardware aligns with your software, operating system, and intended platforms.
Power Efficiency :
- Hardware that uses energy efficiently can reduce costs in long-term, especially in large setups.
Safety Measures :
- Explore hardware-level security features, such as TPM, to enhance protection.
Overseeing & Control :
- Tools like ILOM can be beneficial for remote handling.
- Make sure the hardware can be seamlessly monitored for health and performance.
Budgeting :
- Consider both initial expenses and long-term costs when budgeting.
Support & Community :
- Choose hardware from reputable vendors known for reliable support.
- Check for available drivers, updates, and community discussions around the hardware.
Planning Ahead :
- Opt for hardware that can cater to both present and upcoming requirements.
Operational Environment :
- Temperature Control : Ensure cooling systems to manage heat from high-performance units.
- Space Management : Assess hardware size considering available rack space.
- Reliable Power : Factor in consistent and backup power sources.
Cloud Coordination :
- If you're leaning towards a hybrid cloud setup, focus on how local hardware will mesh with cloud resources.
Life Span of Hardware :
- Be aware of the hardware's expected duration and when you might need replacements or upgrades.
Optimized for Virtualization :
- If utilizing virtual machines or containers, ensure the hardware is compatible and optimized for such workloads.
Adaptability :
- Modular hardware allows individual component replacements, offering more flexibility.
Avoiding Single Vendor Dependency :
- Try to prevent reliance on a single vendor unless there are clear advantages.
Eco-Friendly Choices :
- Prioritize sustainably produced hardware that's energy-efficient and environmentally responsible.
In essence, DevOps teams should choose hardware that is compatible with their tasks, versatile, gives good performance, and stays within their budget. Furthermore, long-term considerations such as maintenance, potential upgrades, and compatibility with impending technological shifts must be prioritized.
What is the role of hardware in disaster recovery planning and implementation?
Hardware is critical in disaster recovery (DR) solutions. While the broader scope of DR includes things like standard procedures, norms, and human roles, it's the hardware that keeps business processes running smoothly. Here's an outline of how hardware works with DR:
Storing Data and Ensuring Its Duplication :
- Backup Equipment : Devices like tape storage, backup servers, and external HDDs keep essential data stored safely at a different location.
- Disk Arrays : Systems such as RAID offer a safety net. If one disk crashes, the others compensate.
Alternate Systems for Recovery :
- Backup Servers : These step in when the main servers falter, maintaining service flow.
- Traffic Distributors : Devices like load balancers share traffic across servers. If a server crashes, they reroute users to operational ones.
Alternate Operation Hubs :
- Ready-to-use Centers : Locations equipped and primed to take charge immediately when the main center fails.
- Basic Facilities : Locations with necessary equipment but lacking recent data, taking longer to activate.
- Semi-prepped Facilities : Locations somewhat prepared with select systems and data, taking a moderate duration to activate.
Power Backup Mechanisms :
- Instant Power Backup : Devices like UPS offer power during brief outages, ensuring no abrupt shutdowns.
- Long-term Power Solutions : Generators keep vital systems operational during extended power losses.
Networking Equipment :
- Backup Internet Connections : Having alternatives ensures connectivity even if one provider faces issues.
- Secure Connection Tools : Devices ensuring safe remote access, especially crucial during DR situations.
On-site Physical Setup :
- Organized Housing : Structures like racks to neatly store and manage hardware.
- Emergency Temperature Control : Backup cooling mechanisms to counter server overheating in HVAC malfunctions.
Alternate Communication Channels :
- Orbit-based Phones : Handy when regular communication methods falter.
- Direct Communication Devices : Devices like radios useful when primary systems are down.
Protection Mechanisms :
- Electronic Barriers & Alert Systems : Devices like firewalls and intrusion detection keep DR systems safeguarded.
- Physical Entry Control : Systems controlling entry and monitoring, ensuring only cleared personnel have access.
Uniformity and Compatibility in Hardware :
- It's simpler to manage and replace equipment in emergencies if hardware configurations are consistent and compatible.
Equipment for Trials and Upkeep :
- DR drills might use specific equipment to ensure the primary systems remain unaffected. This verifies the equipment's readiness and capacity to manage real crises.
In summary, while software and human interventions are important in disaster recovery operations, it is the hardware that provides the underlying support. It is critical for efficient disaster recovery plans to keep this hardware resilient, duplicated, and routinely assessed.
What is a RAID?
RAID is an acronym that stands for "Redundant Array of Independent Disks." It is a technique that combines numerous hard drives into a single device known as an array in order to improve performance, expand storage capacity, and/or offer redundancy to prevent data loss. RAID levels (for example, RAID 0, RAID 1, and RAID 5) provide varied benefits in terms of performance, redundancy, and storage efficiency.
What is a microcontroller?
A microcontroller is a small integrated circuit that controls certain tasks in an embedded system. It typically includes a CPU, memory, and input/output peripherals.
What is a Network Interface Controller or NIC?
A Network Interface Controller (NIC) is a piece of hardware that connects a computer to a network and allows it to communicate with other devices.
What is a DMA?
Direct memory access (DMA) is a feature of computer systems that allows certain hardware subsystems to access main system memory independently of the central processing unit (CPU).DMA enables devices to share and receive data from the main memory in a computer. It does this while still allowing the CPU to perform other tasks.
What is a Real-Time Operating Systems?
A real-time operating system (RTOS) is an operating system (OS) for real-time computing applications that processes data and events that have critically defined time constraints. An RTOS is distinct from a time-sharing operating system, such as Unix, which manages the sharing of system resources with a scheduler, data buffers, or fixed task prioritization in a multitasking or multiprogramming environment. Processing time requirements need to be fully understood and bound rather than just kept as a minimum. All processing must occur within the defined constraints. Real-time operating systems are event-driven and preemptive, meaning the OS can monitor the relevant priority of competing tasks, and make changes to the task priority. Event-driven systems switch between tasks based on their priorities, while time-sharing systems switch the task based on clock interrupts.
List of interrupt types
There are six classes of interrupts possible:
외부- Machine check
- 입출력
- 프로그램
- 다시 시작
- Supervisor call (SVC)
Big Data
Explain what is exactly Big Data
As defined by Doug Laney:
Volume: Extremely large volumes of data- Velocity: Real time, batch, streams of data
- Variety: Various forms of data, structured, semi-structured and unstructured
- Veracity or Variability: Inconsistent, sometimes inaccurate, varying data
What is DataOps? How is it related to DevOps?
DataOps seeks to reduce the end-to-end cycle time of data analytics, from the origin of ideas to the literal creation of charts, graphs and models that create value. DataOps combines Agile development, DevOps and statistical process controls and applies them to data analytics.
What is Data Architecture?
An answer from talend.com:
"Data architecture is the process of standardizing how organizations collect, store, transform, distribute, and use data. The goal is to deliver relevant data to people who need it, when they need it, and help them make sense of it."
Explain the different formats of data
Structured - data that has defined format and length (eg numbers, words)- Semi-structured - Doesn't conform to a specific format but is self-describing (eg XML, SWIFT)
- Unstructured - does not follow a specific format (eg images, test messages)
What is a Data Warehouse?
Wikipedia's explanation on Data Warehouse Amazon's explanation on Data Warehouse
What is Data Lake?
Data Lake - Wikipedia
Can you explain the difference between a data lake and a data warehouse?
What is "Data Versioning"? What models of "Data Versioning" are there?
What is ETL?
Apache Hadoop
Explain what is Hadoop
Apache Hadoop - Wikipedia
Explain Hadoop YARN
Responsible for managing the compute resources in clusters and scheduling users' applications
Explain Hadoop MapReduce
A programming model for large-scale data processing
Explain Hadoop Distributed File Systems (HDFS)
Distributed file system providing high aggregate bandwidth across the cluster.- For a user it looks like a regular file system structure but behind the scenes it's distributed across multiple machines in a cluster
- Typical file size is TB and it can scale and supports millions of files
- It's fault tolerant which means it provides automatic recovery from faults
- It's best suited for running long batch operations rather than live analysis
What do you know about HDFS architecture?
HDFS Architecture
Master-slave architecture- Namenode - master, Datanodes - slaves
- Files split into blocks
- Blocks stored on datanodes
- Namenode controls all metadata
Ceph
Explain what is Ceph
Ceph is an Open-Source Distributed Storage System designed to provide excellent performance, reliability, and scalability. It's often used in cloud computing environments and Data Centers. 참인가 거짓인가? Ceph favor consistency and correctness over performances
진실 Which services or types of storage Ceph supports?
Object (RGW)- Block (RBD)
- File (CephFS)
What is RADOS?
Reliable Autonomic Distributed Object Storage- Provides low-level data object storage service
- Strong Consistency
- Simplifies design and implementation of higher layers (block, file, object)
Describe RADOS software components
감시 장치- Central authority for authentication, data placement, policy
- Coordination point for all other cluster components
- Protect critical cluster state with Paxos
- 관리자
- Aggregates real-time metrics (throughput, disk usage, etc.)
- Host for pluggable management functions
- 1 active, 1+ standby per cluster
- OSD (Object Storage Daemon)
Stores data on an HDD or SSD
- Services client IO requests
What is the workflow of retrieving data from Ceph?
The work flow is as follows: - The client sends a request to the ceph cluster to retrieve data:
Client could be any of the following
- Ceph Block Device
- Ceph Object Gateway
- Any third party ceph client
- The client retrieves the latest cluster map from the Ceph Monitor
- The client uses the CRUSH algorithm to map the object to a placement group. The placement group is then assigned to a OSD.
- Once the placement group and the OSD Daemon are determined, the client can retrieve the data from the appropriate OSD
What is the workflow of writing data to Ceph?
The work flow is as follows: - The client sends a request to the ceph cluster to retrieve data
- The client retrieves the latest cluster map from the Ceph Monitor
- The client uses the CRUSH algorithm to map the object to a placement group. The placement group is then assigned to a Ceph OSD Daemon dynamically.
- The client sends the data to the primary OSD of the determined placement group. If the data is stored in an erasure-coded pool, the primary OSD is responsible for encoding the object into data chunks and coding chunks, and distributing them to the other OSDs.
What are "Placement Groups"?
Describe in the detail the following: Objects -> Pool -> Placement Groups -> OSDs
What is OMAP?
What is a metadata server? 어떻게 작동하나요?
포장 기계
What is Packer? 그것은 무엇을 위해 사용됩니까?
In general, Packer automates machine images creation. It allows you to focus on configuration prior to deployment while making the images. This allows you start the instances much faster in most cases.
Packer follows a "configuration->deployment" model or "deployment->configuration"?
A configuration->deployment which has some advantages like:
Deployment Speed - you configure once prior to deployment instead of configuring every time you deploy. This allows you to start instances/services much quicker.- More immutable infrastructure - with configuration->deployment it's not likely to have very different deployments since most of the configuration is done prior to the deployment. Issues like dependencies errors are handled/discovered prior to deployment in this model.
풀어 주다
Explain Semantic Versioning
This page explains it perfectly:
Given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes
MINOR version when you add functionality in a backwards compatible manner
PATCH version when you make backwards compatible bug fixes
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
인증서
If you are looking for a way to prepare for a certain exam this is the section for you. Here you'll find a list of certificates, each references to a separate file with focused questions that will help you to prepare to the exam. 행운을 빌어요 :)
AWS
- Cloud Practitioner (Latest update: 2020)
- Solutions Architect Associate (Latest update: 2021)
- Cloud SysOps Administration Associate (Latest update: Oct 2022)
하늘빛
- AZ-900 (Latest update: 2021)
쿠버네티스
- Certified Kubernetes Administrator (CKA) (Latest update: 2022)
Additional DevOps and SRE Projects
크레딧
Thanks to all of our amazing contributors who make it easy for everyone to learn new things :)
Logos credits can be found here
특허