- 설치형 애플리케이션과 웹 애플리케이션의 장단점은 무엇인가요? 이 링크를 통해 이 둘의 차이점을 조사하세요.
설치형 애플리케이션
- 장점
보안수준이 높고 안정적이며 보다 높은 사양의 그래픽과 성능을 낼 수 있다.
- 단점
설치 및 유지 보수의 어려움과 높은 초기 비용이 있다.
웹 애플리케이션
- 장점
설치가 필요없이 이용이 매우 간편하고 진입장벽이 낮고 유지보수가 매우 쉽고 빠른 업데이트가 가능하다.
- 단점
클라우드에 저장하기 때문에 보안성이 떨어지며 인터넷에 접속 할 수 있어야만 이용가능하다.
- 웹 호스팅 서비스와 클라우드 서비스는 각각 무엇이고, 어떤 차이가 있나요?
웹호스팅은 서버컴퓨터의 일정 공간을 고객이 이용할 수 있도록 임대해 주는 서비스이며 클라우드 서비스는 인터넷 기반의 컴퓨팅을 말하며 인터넷 상의 가상화된 서버에 프로그램을 두고 필요할때마다 컴퓨터나 스마트폰 등에 불러와 사용하는 서비스입니다.
호스팅 서비스와 클라우드 서비스의 차이점은 바로 ‘유연성’이다. 호스팅 서비스는 IDC에 물리적인 실제 서버를 구축해 서비스하는데 반해 클라우드 서비스는 서버를 가상화해 사용자 필요에 따라 실시간에 가깝게 자유로운 확장과 축소가 가능하다. 갑작스러운 트래픽의 증가에 대응하기 쉽다는 것이다.
실제 서버 호스팅은 실물의 서버를 구축한 후 서비스하기 때문에 서버 구매 또는 임대부터 서비스를 제공받기까지 보통 24시간이 소요되며 비용 또한 높다. 뿐만 아니라 한정된 범위 내에서만 자원 확장이 가능하며, 서버자원의 과사용으로 자원이 낭비될 수도 있다.
하지만 가상화를 기반으로 하는 클라우드 서비스는 효율적인 서버운영이 가능하다. 사용자가 필요한 시점에 바로 사용할 수 있으며 개발이나 테스트 및 서비스 등 서버를 운영하면서 발생되는 부하에 따라 언제든지 서버 자원을 증설하거나 줄일 수 있다. 불필요한 자원의 사용으로 인해 발생하는 자원을 낭비할 수 있다.
출처 : 컴퓨터월드(http://www.comworld.co.kr)
- 독립적인 소프트웨어 패키지(빌드)가 배포로 항상 이어지나요?
아니요.
- 클라우드 서비스의 전달 방식이 전통적인 소프트웨어 전달 방식에 비해 갖는 단점으로는 무엇이 있을까요?
1.인터넷
클라우드 서비스는 언제 어디서든 원하는 서비스를 이용할 수 있지만, 인터넷 접속이 선행되어야 한다는 제약이 있다. 인터넷 접속 단말 보급이 더딘 지역에서는 클라우드 서비스를 제대로 이용하기 어렵다.
https://4ir.kisti.re.kr/ick/cmmn/viewPost/20180223000019
2.보안성
외부망을 사용하기 때문에 내부망에서만 사용되는 솔루션과 비교하여 보안상 이슈가 발생 할 수 있다.
https://brunch.co.kr/@leedongins/60
- 여러분은 요식업 프랜차이즈를 운영하고 있는 백종원 대표를 알고 있나요? CI/CD 파이프라인은 흡사 "백종원님이 새로운 프랜차이즈를 런칭하기 위해 연구하고, 사업을 확장하는 과정"과 매우 흡사합니다. 즉 다음 순서를 따른다고 볼 수 있습니다.
- 기획
- 레시피 연구 : 파이프라인의 새 인스턴스를 트리거
- 레시피 완성 : 소프트웨어의 빌드(컴파일)
- 테스트 (시식) : 바이너리, 구성, 환경을 포함한 코드를 테스트
- 팝업스토어 오픈 : 소프트웨어를 환경에 출시
- 전국 단위 확대 : 소프트웨어를 사용자에게 배포
- 매출 점검 : 소프트웨어 배포 후 모니터링
- 각 단계(Stage)에서 실행하는 행위(Action)로는 어떤 것들이 있을까요?
- 계획 - 목적을 수행하기 앞서 방법이나 절차 등을 미리 생각하여 계획
- 코드 - 코드 개발 및 검토, 버전 관리 도구, 코드 병합
- 빌드 - 지속적 통합(CI) 도구, 빌드 상태
- 테스트 - 테스트 및 결과가 성능을 결정
- 패키지 - 애플리케이션 디플로이 이전 단계
- 릴리스 - 변경 사항 관리, 릴리스 승인, 릴리스 자동화
- 구성 - 인프라 스트럭처 구성 및 관리, IaC(Infrastructure as Code) 도구
- 모니터링 - 애플리케이션 성능 모니터링, 최종 사용자 경험
- (Dev팀과 Ops팀) 각 팀의 목표는 어떻게 다른가요? 두 팀의 목표에서 상충되는 부분이 존재하나요?
- (Google Play Store 배포용) 안드로이드 앱 버전 기준에 따르면, 각 버전은 어떻게 다른가요? 어떤 버전이 가장 안정적이라고 볼 수 있나요?
- 공개 테스트 : 공개 테스트 버전은 Google Play에서 테스터에게 제공됩니다. 사용자는 스토어 등록정보를 통해 테스트에 참여할 수 있습니다.
- 비공개 테스트 : 비공개 테스트 버전은 개발자가 선택하는 제한된 수의 테스터에게 제공되며, 이 테스터는 앱의 출시 전 버전을 테스트하고 의견을 제출할 수 있습니다.
- 내부 테스트 : 내부 테스트 버전은 개발자가 선택하는 최대 100명의 테스터에게 제공됩니다.
- 프로덕션 : 프로덕션 버전은 선택한 국가의 모든 Google Play 사용자에게 제공됩니다 - 최종 배포본이기때문에 가장 안정적이다.
- DevOps는 어떻게 정의될 수 있나요? 직군인가요? 팀인가요? 아니면 다른 무엇인가요?
DevOps는 Dev(개발) + Ops(운영)의 합성어로 개발과 운영의 벽을 허물고 통합하고자하는 문화 및 철학을 뜻한다.
https://velog.io/@maketheworldwise/DevOps-DevOps-%EB%9E%80
- DevOps를 실현 가능하게 하기 위해 기술이 필요한 부분과, 기술이 아닌 문화로 풀어야 할 부분은 각각 무엇인가요? CI/CD 파이프라인에 근거해 답해봅시다.
- DevOps의 필요성이 대두된 배경을 설명할 수 있나요?
데브옵스(DevOps)는 이전에 개발과 운영으로 분리되어 있던 장벽을 무너뜨려 엔지니어에게 두가지의 자질을 모두 요구하며 개발자의 생산성과 안정성을 높혀주고 잦은 소통을 통하여 효율성을 높이고 최종 사용자인 고객에게 제공되는 서비스의 품질을 높힐 수 있게 된다. 또한 개발과 운영을 모두 책임져야 하므로, 개개인에게 주인의식을 함양시킬 수 있게 된다.
https://well-made-codestory.tistory.com/23
- IT 인프라의 자동화를 돕는 툴로는 어떤 것들이 있나요?
ttps://devopscube.com/devops-tools-for-infrastructure-automation/
- 프로비저닝의 종류에는 어떤 것들이 있나요?
서버 프로비저닝
서버 프로비저닝은 필요한 리소스를 기반으로 네트워크에서 사용될 서버를 설정하는 프로세스입니다. 새로운 시스템을 생성한 후 가동 상태로 만드는 데 필요한 모든 작업은 물론, 해당 시스템에 대해 원하는 상태를 정의하는 작업도 포함됩니다. 서버 프로비저닝은 데이터센터에 물리적 하드웨어 설치, 소프트웨어 설치 및 설정, 운영 체제 및 애플리케이션 포함, 미들웨어와 네트워크 및 스토리지 연결로 이루어집니다
사용자 프로비저닝
사용자 프로비저닝은 액세스 권한과 인증 권한을 모니터링하는 아이덴티티 관리 유형에 속합니다. 프로비저닝은 직원, 공급업체, 계약자와 같은 사용자 오브젝트와 사용자 속성을 통해 정의됩니다. 제공되는 서비스에는 이메일, 데이터베이스 액세스, 네트워크 액세스가 포함될 수 있습니다. 일반적으로 RBAC는 권한, 롤, 그룹, 사용자로 구성됩니다. 사용자는 하나 이상의 그룹에 할당되고, 그룹에는 롤(예: 읽기 전용, 편집, 관리자)이 할당되며, 롤은 권한으로 구성되는 식입니다. 사용자 프로비저닝은 IT와 HR 사이에서 관리되는 경우가 많습니다.
네트워크 프로비저닝
네트워크 프로비저닝에는 특히 사용자, 서버, 컨테이너, IoT 기기가 액세스할 네트워크를 설정하는 작업이 포함될 수 있습니다. 오늘날의 연결된 세상에서는 다양한 항목 유형이 네트워크 소비자일 수 있습니다. 네트워크 프로비저닝은 필요한 장비와 배선을 비롯해 사용자에게 통신 서비스를 제공하는 것을 지칭하는 방식으로 흔히 통신 업계에서 사용되며, 사용자를 위한 무선 환경의 서비스 활성화를 포함할 수도 있습니다.
서비스 프로비저닝
서비스 프로비저닝에는 서비스 설정과 이와 관련된 데이터 관리가 포함됩니다. 서비스 프로비저닝은 통신 업계에서 고객을 위한 서비스나 클라우드 인프라를 설정하는 데 사용됩니다. 예를 들어 클라우드 서비스 프로비저닝은 클라우드 컴퓨팅의 셀프 서비스 구성 요소입니다. 사용자는 IT 직원의 도움 없이도 셀프 서비스 포털을 통해 클라우드 서비스를 사용할 수 있습니다.
https://www.redhat.com/ko/topics/automation/what-is-provisioning
수직확장
서버의 성능(CPU, RAM, 스토리지, 네트워크 I/O)을 높이는 방법
서버로 유입되는 트래픽의 양이 적을 때
수직적 규모 확장에는 한계가 존재
수직 확장은 장애 대응이 어렵습니다
수평확장
더 많은 서버를 도입하는 방법
트래픽이 많을 경우에는 수평 확장만이 답
대규모 애플리케이션을 운영하기 위해서는 수평 확장을 늘 고려해야 합니다.
차에 비유하면 쉬움
인원 - 여행지 - 차량
인원이 3명이고 차량이 4인승이면 아무런 문제가 없음
인원이 6명이고 차량이 4인승이면 차를 6인승으로 바꾸던가 4인승 차를 한대를 더 빌리면 됌
분산 시스템
- 성능 (Performance): 높은 처리량(throughput) 뿐 아니라 낮은 대기 시간(latency)과 같은 지표 등을 포함하는 개념입니다.
- 확장성 (Scalability): 증가하는 작업량을 처리할 수 있는가, 이로 인한 시스템 확장이 가능한가를 따져보는 기준입니다.
- 가용성 (Availability): 시스템이 정상적으로 사용 가능한 정도를 의미합니다.
Availiability = Uptime / (Uptime + Downtime)
업타임 : 작동중인 시간 , 다운타임 : 작동중이지 않은 시간
- 성능: 한 대의 컴퓨터의 성능을 높이기 위해 업그레이드를 하는 것은 한계가 있을 뿐더러 비용이 많이 듭니다.
- 여러 대의 (비교적 낮은) 성능의 컴퓨터가, 한 대의 고성능 컴퓨터의 성능을 내는 것이 가능합니다. 게다가 비용적인 측면에도 유리합니다.
- 확장성: 한 대의 컴퓨터로 트래픽을 처리하고, 데이터를 저장하는 데에는 한계가 있습니다. 네트워크 대역폭, 스토리지(HDD, SDD 등) 저장 공간은 특정 지점까지만 확장 가능합니다.
- 분산 시스템을 구축하면, 데이터를 여러 대의 컴퓨터에 분할하여 저장하고, 처리 작업을 각 컴퓨터에 맡기는 것이 가능합니다.
- 가용성: 끊임없이 작동하는 한 대의 컴퓨터가 1년 중 단 5분 정도만 다운될 수 있을까요? 하드웨어의 신뢰성을 생각해보면, 한 대의 컴퓨터가 고가용성을 제공하는 것은 불가능합니다.
- 한 컴퓨터가 담당하는 일을 수평 확장을 통해 여러 대의 똑같은 클론을 만들어 일하게 한다면, 한 컴퓨터에서 장애가 발생했을 때 효율적으로 다른 컴퓨터로 전환할 수 있습니다.
중복성
높은 가용성을 위해 한 컴퓨터의 클론을 만든다는 것은, 그 안에 존재하는 데이터 역시 복제되어야 함을 의미합니다. 이러한 데이터 중복 메커니즘은 가용성을 얻기 위해 필요한 작업입니다. 물론 여기에는 Trade-off가 존재합니다. 각기 다른 컴퓨터가 동일한 데이터를 갖고 있어야 한다는 점을 떠올려보세요. 이는 상당히 도전적이고 복잡한 메커니즘이 뒤따르기 마련입니다!
수십대의 동일한 서버에 (1) 보안 패치를 적용하고, 개발팀에 의해 새로 릴리즈되는 프로그램을 모든 서버에 설치해야 한다고 가정해보세요. 이 과정에서는 (2) 구 버전 애플리케이션을 중지하고, (3) 새로운 업데이트를 다운로드 받아야 하며, (4) 새 버전 애플리케이션을 실행하는 등의 작업이 전부 포함됩니다.
수평 확장된 서버가 두세대 규모일 때라면, 관리자가 수동으로 변경 사항에 대한 처리를 해줄수도 있겠지만, 서버가 수십대 규모로 불어날 경우 걷잡을 수 없이 복잡한 작업이 되고 맙니다.
또한 두세대 규모의 서버라고 하더라도, 이러한 작업을 자동화하지 않으면 사람이 발생시키는 작은 에러, 시간에 따른 문제 등으로 완전히 동일한 구성을 유지하기가 힘듭니다.
따라서 이러한 자동화는 선택이 아니라 필수입니다.
- IT 인프라의 자동화를 돕는 툴로는 어떤 것들이 있나요?
ttps://devopscube.com/devops-tools-for-infrastructure-automation/
메트릭이란?
메트릭은 시간에 따라 측정한 결과값입니다. 보다 넓은 의미로는 비즈니스 개념을 나타내는 수치 측정을 의미하기도 합니다.