Devops 면접 준비, C/E (지속적인 수정)중입니다!

2021. 4. 15. 17:30Work/Cloud_Story

728x90
반응형

https://ko.wikipedia.org/wiki/데브옵스

#기술 면접 준비

Q. 해당 글은 누가 보면 좋은가요?

A. Devops 신입으로 지원하시는 분입니다.

 

Q. Devops가 뭔가요?

A. 개발을 하면서 운영도 도맡아 합니다.

여기에서 운영이라고 하면 어떤 서비스를 동작하기 위해 만들거나 관리하는 모든 차원이 포함됩니다.

 

Q. cs도 필요한가요?

A. 알면 좋습니다.

 

Q. 이 모든걸 알아야 하나요?

A. 가능한 많이 아는쪽이 붙을 확률이 높습니다.

 

Q. 면접 질문 내용이 아니라 단어의 나열인 이유가 있나요?

A. 어떤 범위에서 어떤 말로 면접이 나올지 모르기 때문입니다. (제가 모든 답이 아니기 때문에..)
"예를 들면 google을 인터넷에 치면 어떤 경로로 우리가 볼 수 있을까요?" 라는 질문에 dchp, router 단에서 부터 시작할 수도 있는 것이구요, DNS - Gateway - Internet 연결 부위로 설명할 수 도 있기 때문입니다. 


#computer science

 

인터넷의 연결

- ISP (Internet Service Provider)

- DHCP (Domain Host Configuration Protocol)

- Router : 우리가 주소 길 찾기 전문가 입니다!

- Subnet : 작은 단위의 주소에요!

- Subnet mask : 낭비되고 있는 주소는 제가 최소화 합니다!

- Gateway : 다른 주소에 연결을 원하신다구요? 저를 통하시면 됩니다. 그런데 Traffic 발생하는건 아시죠?

- DNS (Domain Name System) Server : 도메인 이름들 여기 있어요! 없다구요?! 음 root에서 찾아볼께요, TLD(Top-level domain) Server나 Name Server에 있을 수도 있어요

주소 임대 해드립니다 :) ISP에서 확인 하세요!

상대방의 주소를 알려면 ARP를 요청하세요!

우린 대부분 Router나 AP에서 처리해요!

- ARP (Address Resoultion Protocol)

아.. 상대방의 주소가 궁금 하시다고요??

- AP (Access Point) : 찾고 계신 그 길로 갈 수 있는지 알려드려요!

- Broadcast : 모든 대상을 찾아 드려요

- Multicast : 원하시는 곳들 모두 찾아 드려요

https://www.esds.co.in/blog/difference-between-unicast-broadcast-and-multicast/#sthash.M9mk3Hs4.rlYvTBx2.dpbs

제가 찾아드리는건 Passive Scan!

직접 찾으시는건 Active Scan! 

입니다. :)

www (world wide web) : 인터넷에 연결된 pc에서 웹으로 정보 공유의 공간이에요!

https://en.wikipedia.org/wiki/OSI_model
https://en.wikipedia.org/wiki/Internet_protocol_suite

- TCP, UDP : 우리(protocol)는 T(ransport) 계층에 있어요! data의 전송을 담당 합니다 :), TCP는 3-way hanshake 방식을 사용하여 확인 하는 과정이 있기 때문에 신뢰가 높아요! 하지만 느리죠, UDP는 확인 하는 과정이 없어서 빠르지만 신뢰가 낮아요! (상대적인 거에요)

- HTTP( HyperText Transfer Protocol), HTTPS(TLS/SSL) : 인터넷에서 주고 데이터를 주고 받을 수 있도록 해줘요!

- TLS/SSL

- socket : A(pplication)와 T(ransport)사이의 데이터 통로에요!

- 3-way hanshake : TCP 연결 구축을 담당 합니다! SYN, SYN ACK, ACK 핑퐁 구조에요!

- segment : T(ransport)에서 N(etwork)로 전송되는 데이터 단위라고 불려요!

7. 	Data 	 | Applications		
6. 	Data 	 | Presentations	
5. 	Data 	 | Sessions			
4. 	Segments | Transport		
3. 	Packets	 | Network			
2. 	Frames	 | DataLink			
1. 	bits	 | physical			

- encapsulation : 캡슐화 처리를 해요!

- multiplex(다중화) : 정보를 모아요!

- demultiplex(역다중화) : 정보를 나눠요!

A(pplications)에서 T(ransport)로 데이터가 전달될때 socket을 통하게 되는데 
T에서는 segment를 준비해요!

segment가 N(etwork)에 전달하는 과정을 multiplex라고 합니다. encapsulation되어 있어요!

segment로 분석된 port header를 T에서 A로 socket에 전달하는 과정을 demultiplex라고 합니다.

- Get, Post : 데이터를 전송하는 방식에 따라 달라요! Get은 데이터 조회를 위해 씁니다. 데이터가 헤더에 추가되고 노출되기 때문에 보안이 낮아요, Post는 추가, 수정할때 씁니다. 데이터가 바디에 추가되고 노출이 적기 때문에 보안이 높아요 (상대적인 거에요)

- Session, Cookie : 세션은 쿠키를 기반으로 해요, 쿠키는 로컬에 저장되어 있는 키와 값이 있는 데이터 파일이에요! 세션은 서버에 키와

값을 저장해 사용하기 때문에 쿠키보다 보안은 우수하지만 느려요


OS (Operation System)

- Memory : {code, data} = static segment, {heap, stack} = dynamic segment 영역으로 이루어져 있어요!

- Thread : 프로세스의 흐름이에요!

- Process : 실행 중인 컴퓨터 프로그램, 작업이라고 불려요!

멀티 스레드를 쓰는 이유!

프로세스보다 스레드의 컨텍스트 스위치 속도가 더 빠르다!

- Sychronous : 요청을 보내면 응답이 와야 다음으로 넘어가죠!

- Asychronous : 응답이 없어도 그냥 계속 응답을 보내놔요, 언젠간 응답이 오겠죠! 같이 올 수 도 있구요!

- Concurrency : 싱글 프로세서에서 실행해요 스레드를 번갈아가면서 동시에 실행하는 것처럼 보이게

하죠!(소프트웨어적으로 처리해요!) 

- Parallelism : 멀티코어 프로세서에서 실행해요, 여러개의 코어가 각 스레드를 실행하죠 (하드웨어 적으로 처리해요!)

 

- Critical Section : 동기화(동시 접근)를 위해 공유되는 자원을 관리하는 영역이에요

- Semaphore : 나는 여러개 지정된 수를 관리해요, 키가 있으면 lock을 풀 수 있어요

- Mutex : 나는 단지 하나만 관리해요, lock한 키로만 열 수 있어요

- Deadlock & Starvation

2 point를 먹으면 이기는 게임이에요!

    A        B
+ ------ + ------ +
    1        1
+ ------ + ------ +

A랑 B 둘다 양보하지 못 하고 서로 포인트를 점유하고 있는 상태! D(eadlock)

이때 C는 아무것도 못하고 S(tarvation) 상태에 빠짐!

    C   
+ ------ + 
    0      
+ ------ + 

- Context Switching : 프로세스 상태 변경

- Pagging / Sementation : 가상 메모리 기법, 고정크기 분할 / 가변길이 분할

 

#linux

- chmod : r = 4, w = 2, x = 1, change mode로서 권한 부여를 설정해요

chmod 777 file

- ping : 외부 호스트 서버가 네트워크상으로 접근이 가능한지 확인해보는 명령어에요

ping -c 3 8.8.8.8

- Directory structure

/     : 가장 최상위
/root : 시스템 관리자의 홈
/bin  : 기본 명령어
/etc  : 환경 설정
/boot : 리눅스 커널 저장
/usr  : 대부분의 프로그램
/lib  : 라이브러리 존재
/home : 시스템 계정 사용자들의 홈
/dev  : 디바이스 목록
/proc : 프로그램 정보, 하드웨어 정보
/var  : 가변적 파일 저장, log, caching
/tmp  : 임시 파일

- Network management command

ping       : 네트워크 동작 상태 진단, 통신 여부 판단
netstat    : 소켓의 연결 상태 또는 네트워크의 연결상태 파악
traceroute : TCP/IP 패킷의 경로 추적

- Disk Partition (기억 공간 -> 데이터 영역으로 분할) management

MBR : 2TB 이하만 사용 가능, 파티션 4개 가능, 호환성 좋음
GPT : 2TB 이상 사용 가능, 파티션 128개 가능, 저장용으로만 사용

- VFS (virtual file system) : 다양한 파일 시스템들이 종류의 관계 없이 동작 하도록 도와줘요

 

#database

 

- SQL (Structured Query Languag) : RDBMS에서 데이터를 관리하기 위한 언어에요

- RDBMS, NoSQL 차이 : RDBMS는 각각의 속성 테이블과 해당 값을 필요로 하지만, NoSQL에서는 key값 만으로 입출력이 가능해요

- Data Mining : 정보를 추출하여 사용자가 읽을 수 있도록 하는거에요

- Data base index : 데이터를 빠르게 검색하기 위한 참조

 

#devops, cloud, aws

 

- Devops : 성공적인 비즈니스를 위한 약속된 문화, 방법론이에요

- Devops 요소들 : IaC (인프라 기반 코드), 자동화, CI/CD, 보안, 모니터링이 있습니다.

- Prometheus : 시계열 데이터에 최적화된 데이터베이스, 메트릭 기록을 통해 모니터링 지표를 저장해요, 이전의 모니터링 툴 방식인 push를 버리고 pull 방식으로 변경했으며, 더 넓은 범위의 모니터링을 제공해요, scale-out 어려워요

- InfluxDB : 시계열 데이터베이스, push 방식이에요, 이벤트 로깅할 때 많이 사용해요

*시계열 데이터 : 시간 별로 구성된 값 구성

- Grafana : 시계열 매트릭 데이터를 시각화 하는데 최적화된 대시보드를 제공해주는 툴킷이에요, 시각화한 그래프에서 특정 수치 이상으로 값이 치솟으면 알림을 전달받을 수 있는 기동도 제공해요

- Argo : Kubernetes용 GitOps 지속적 배포 도구, 실행 중인 애플리케이션을 지속적으로 모니터링하고 라이브 상태를 비교해요, 원하는 상태와 현재 라이브 상태 간의 차이점을 찾는데 도움이 되는 UI 및 CLI가 함께 제공해요

- Kubernetes(우대) : 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼이에요, 선언적 구성과 자동화를 모두 지원해요

- ETCD : key-value 형식으로 정보를 저장하는 데이터 베이스

- Stateless : ex) 검색창에 질문을 입력하고 엔터키를 누르는 형식으로 진행되는 온라인 검색, 트랜잭션에 대한 정보 또는 참조가 저장되지 않기 때문에 트랜잭션은 모두 처음부터 시작, 단일 요청에 대해 하나의 응답, 자동판매기와 비슷

Stateful : ex) 온라인 뱅킹이나 메일처럼 여러번 반환될 수 있음, 사용자에게 받은 요청을 처리할 때마다 같은 서벌르 사용, 컨텍스트와 내역이 저장되므로 중단되어도 중단된 곳부터 다시 시작할 수 있음, 같은 사람과 주기적으로 지속하는 대화와 비슷

Stateless, Stateful 차이: 상호 작용 상태가 얼마나 오래 기록되는지, 해당 정보가 어떤 식으로 저장되는지를 기준으로 구별

Mutable : 기존 버전을 지우고 새로운 인프라를 구성

- Immutable : 기본 디스크 변경이 가능하지만 속편 버전을 실행할 때 그 자체가 손실되는 것이 아니라 하나의 버전을 다른 버전에 적용하여 처리

 


- AWS EC2 (Elastic Computer Cloud) : 클라우드에서 확장 가능한 컴퓨팅 성능을 제공하는 웹 서비스에요, 클라우드 컴퓨팅 프로세스를 간단하고 쉽게 만들어 지원해요

- AWS Resource Group : 리소스에 대한 작업을 한 번에 관리하고 자동화할 수 있는 서비스에요

- AWS VPC (Virtual Private Cloud) : 사용자가 regions, subjects, routing tables, internet gateways를 생성하는 데 도움이되는 인프라의 첫 번째 지점 중 하나를 형성, EC2 또는 RDS를 사용할 수 있는 기능 제공

- AWS RDS (Realtional Database Service) : 관계형 데이터베이스를 설정하는데 도움이 되는 서비스, 데이터 베이스를 온라인으로 쉽게 설정, 유지 관리 및 사용할 수 있어요

- AWS ECR (Elastic Container Registry) :  컨테이너 이미지 레지스트리 서비스, docker, OCI(Open Container Initiativ) 이미지 등의 관리가 가능해요

- AWS ECS (Elastic Conatiner Service) : 컨테이너 관리를 위한 확장성이 뛰어나고 사용하기 쉬운 고성능 컨테이너 관리 서비스, 사용자가 관리형 클러스터를 사용하여 EC2 인스턴스에서 애플리케이션을 쉽게 실행할 수 있어요

*클러스터 : 작업 또는 서비스의 논리적 그룹 또는 컨테이너 인스턴스의 그룹화에요

- AWS IAM (Identity and Access Management) : 서비스와 리소스에 대한 액세스를 안전하게 관리하도록 도와줘요

- AWS EKS (Elastic Kubernetes Service) : kubernetes 애플리케이션을 시작, 실행 및 조정할 수 있는 유연성을 제공해요, 고가용성의 안전한 클러스터를 제공하는 데 도움이 되며 패치 적용, 노드 프로비저닝 및 업데이트와 같은 주요 태스크를 자동화 해요

*프로비저닝 : 사용자와 시스템에서 사용할 수 있도록, 데이터와 리소스에  대한 액세스를 관리하는데 필요한 단계에요

- AWS GWLB (Gateway Load Balancer Endpoint) :  여러 가상 어플라이언스에 트래픽을 분산하기 위한 하나의 게이트웨이를 제공, 이렇게 하면 네트워크에서 잠재적인 장애 지점이 제거되고 가용성이 높아져요

*어플라이언스 : 특정한 컴퓨터 자원을 제공하기 위해 설계된 소프트웨어나 펌웨어, 소프트웨어가 사전 로드되어 있는 검증된 서버

구성이에요

 

 

#portfolio, job

모든걸 다 쓰면 좋겠지만 한정적입니다. 순차적으로 해보았으면 좋은 것을 작성했습니다.)

  • aws, terraform, docker, kubernetes
  • ci/cd (jenkins, argocd)
  • monitoring (prometeus)
  • database (vendor)
  • istio

 


 

 

 

 

728x90
반응형

'Work > Cloud_Story' 카테고리의 다른 글

Devops 1년 회고록  (0) 2022.07.19
Devops 기술 면접(신입)을 보면서 느낀점  (0) 2022.03.24