project/DevOps : 코드스테이츠 (2022.02.07-2022.06.07)

[TIL]0208_개발프로세스와 DevOps 업무개요

용감한 개복치 2022. 2. 8. 16:48

#1. 개발프로세스와 DevOps 업무개요(2)

 

Today I Learned,

 

1. 단일 서버

  1) 서버란, 클라이언트에게 리퀘스트를 받아 네트워크를 통해 서비스를 제공하는 컴퓨터 시스템으로 sw, hw둘 다 의미함. 커다란 상자 안에 서버, 스위치, 라우터, vpn을 설치한 것이 우리가 아는 그 서버실의 hw서버들.

웹서버, dns 서버 등과 같이 sw 서버도 있음.

 

    +) 아파치가 웹 서버 sw의 종류였다. 조사하면서 처음 알게되었다. 톰캣, was 로 알고있었는데 얘들은 웹어플리케이션 서버로 분류된다고 한다.

2. 수직 확장 vs 수평 확장

단일 서버로 감당하기 힘든 트래픽이 발생했을 때 서버를 늘려야한다는건 직감적으로 와닿는다.

늘리는 방식에는 두 가지가 있다.

  1) 수직확장 : 서버를 제공하는 하드웨어 자체의 물리적 스펙을 상승시킴. cpu, ram,,,을 높임. 서버에 대한 요청을 더 많이 한번에 가능하게 해줌.

  2) 수평 확장 : 서버의 개수를 늘림. 단순 트래픽이 늘어난 경우나 단일 서버의 인프라 문제 발생시 그냥 서버가 여러대면 커버 가능. 여기서 약간 다른 경우의 수에 머신러닝 같은 여러 대의 컴퓨팅 자원이 필요로 하고 그 결과는 정리해서 사용자에게 보여지는 경우가 있다. 여기서 분산시스템 개념이 나옴.

 

3. 분산시스템

  2번에서 서버를 늘린다고 했는데, 이때 하나의 컴퓨터에서 하나의 프로그램을 실행시키는 여러 대의 컴퓨터의 조합이 분산시스템이다. 그리고 여기서 각각의 컴퓨터를 노드라고 한다.

 

가용성 = 작동시간 / (작동시간 + 대기상태시간)

 성능, 확장성, 가용성등을 기준으로 분산시스템이 얼마나 일을 잘하는지를 살펴 볼 수 있다.

보스를 잡기위해 고렙 혼자 솔플보다 저렙 여럿이 파티하는게 비용적 측면에서 더 유리하다. 성능(높은 처리량 & 낮은 대기시간)적 측면에서도 더 유리하다. 또 여러대를 사용하는 것이 확장성 측면에서도 유리하며 한대의 고성능은 그 한대가 고장나면 가용성이 0이 되니까 리스크는 분담하는게 더 좋은것.

 

4. 자동화

 한 작업을 여러개의 노드에서 처리한다면 개발자는 그 각각의 노드가 잘 돌아가는지, 하나로 잘 합쳐졌는지 등을 모니터링하고 각각의 노드에서 끊임없이 나오는 아웃풋을 하나로 통일+ 하나의 노드의 설정(ex, 업데이트, 패치 / 리소스 제공 / 프로비저닝 / 설정 / 배포)을 바꾸면 전체 적용 하는 작업들이 필수이니 자동화가 중요해지는 것은 당연하다.

  ♬ 자동화 툴 예시 ) Infrastructure as Code, 이하 IaC는 인프라 관리 자동화 기술. 사용자가 사양만 작성하면 되는, 즉 클라우드를 쓸지 말지 컨테이너로 쿠버네티스를 쓸지 말지 같은 세세한걸 정할 필요 없이 원하는 시스템의 상태를 정의하면 알아서 인프라 환경을 구현하는 선언형과 aws쓰고, aws eks로 쓰고 이런걸 하나하나 지정하는 명령형 두 가지가 있다. 앤서블(오픈소스) / CHEF / puppet / SALTSTACK 등/ 테라폼 이 있다. 인프라 자동화를 위해 프로비저닝 + 구성관리가 필요. 단계에 따라 다른 툴을 쓴다.

 

+) 용어정리,, 정리된 글을 읽어도 여전히 단어는 어렵당

+ 라우터 )

+ 프로비저닝 ) 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것 - 위키피디아

 서버자원 / OS / SW / 스토리지 / 계정 의 항목에서 프로비저닝을 한다.

잘 와닿지는 않지만 이것 때문에 가상화와 컨테이너의 개념이 나오는 것 같다. 예전에야 물리적 서버 설정을 해야 하니 확장하려면 HW를 추가로 구매,설치 하고 다시 수동으로 설정해야 했는데 최근엔 클라우드 등이 나오면서 서버 설정이 SW단에 설정되어 있으니 가상서버, 가상인프라의 개념이 등장한 것 아닐까. 미리 프로비저닝을 한번 해 놓은 컨테이너를 사용하면 (EX. 도커) 개발을 같은 환경에서 해야하는 요구를 쉽게 맞출 수 있으니까. 

 

5. 모니터링

 자동화 했으면 각 노드가 잘 돌아가는지 자동화 한 과정은 잘 굴러가는지 모니터링해야한다.

목표는 고가용성과 가설의 검증과 개선.

여기서 기준이 되는 지표를 메트릭 이라고 표현. 구글에서는 트렌드 분석, DB 종류별 쿼리 속도, 인프라 장애 등이 있고 Azure에서는 CPU, 메모리, 인스턴스 개수, 연결 유지 등을 주요 메트릭으로 설정한다.

+) 모니터링이 제대로 힘내려면 여러대 노드로 서버가 구성되어 있는 환경이어야하는 것 같다. 전문적 도구를 이용함.

 

 

*** 참고문헌 ***

http://www.itdaily.kr/news/articleView.html?idxno=204606 

 

[IT 인프라 관리 자동화②] 대세는 ‘앤서블’…‘테라폼’ 혼용 추세 - 아이티데일리

[아이티데일리] 기업들의 IT 인프라 환경이 복잡해지면서 인프라 관리를 자동화할 수 있도록 해주는 기술인 IaC(Infrastructure as Code)가 떠오르고 있다. 인프라 운영 관리 효율성을 높이고, 개발과 운

www.itdaily.kr

https://lipcoder.tistory.com/514

 

[서버 가이드북] 1. 서버(Server) 란?

서버 '서버'란 도대체 어떤 것일까? 추상적으로 무엇인지는 알고 있겠지만, 우선은 사전적인 정의를 알아보는 것이 필요하겠다.  서버 [Server] 1. 테니스, 탁구, 배구 등 서브를 하는 쪽, 또는 그

lipcoder.tistory.com

 

'project > DevOps : 코드스테이츠 (2022.02.07-2022.06.07)' 카테고리의 다른 글

[API][fastify]  (0) 2022.03.04
[회고]프로젝트1  (1) 2022.03.04
[Postman]포스트맨 설치  (0) 2022.02.17
[TIL]0207_개발프로세스와 DevOps 업무개요  (0) 2022.02.08
Node.js 설치  (0) 2021.08.06