HomePostAbout
thumbnail
Interview 대비 요점 정리 <데브옵스>
Interview
Tip
DevOps
2024.01.08.

Devops 디벨롭먼트+오퍼레이션

소프트웨어를 좀 더 신속하게 개발하기 위한 개발팀과 운영팀 사이의 밀접한 소통, 협업 문화.
소프트웨어 개발부터 배포, 운영, 모니터링까지의 전체 생명주기를 관리하게 된다.
핵심은 자동화. 인프라, 애플리케이션 파이프라인을 구축하고 모니터링을 자동화해 비용과 시간을 절약.
이러한 데브옵스를 가능하게 해주는 방법론이 스크럼, 애자일 등이다.

장점

고객이 요구하는 기능을 빠르게 개발, 배포하여 제공할 수 있으며, 이를 통해 빠른 요구대응이 가능하다. CI/CD, 모니터링 등을 통해 안정성을 확보할 수 있다. 개발 과정에서 협업과 커뮤니케이션이 좋아진다.

단점

초기에 많은 비용이 든다. 특히 조직의 문화를 바꾸기 쉬운것이 아니다 보니 많은 노력이 필요할 것이다.

툴체인

계획 - 요구사항 정의
코딩 - 소프트웨어 설계 및 코드 생성
구축 - 소프트웨어 빌드 및 버전관리 (도커)
테스트 - 코드 품질 보장을 위해 지속적인 테스트 수행
배포 - 제품 릴리즈
운영 - 운영증인 소프트웨어 관리
모니터링 - 특정 릴리즈에서 발생하는 문제를 식별하고 수집

GitOps

GitOps 전략은 컨테이너 환경에서 DevOps 자동화를 구성. Kubernetes와 같은 오케스트레이션을 통해 일관성 있고 안정적인 배포를 보장할 수 있으며, 인프라와 애플리케이션 배포를 통합해 관리.

ex.

개발자가 변경한 소스가 push되면 CI/CD 파이프라인이 트리거 됨 이후 단계들을 차례대로 수행하며 빌드 및 테스팅 등을 거치고 결과를 확인할 수 있다.

테스트 자동화

테스트 실행뿐만 아니라 이와 관련된 프로세스를 자동화하여 일련의 테스트 활동을 수행.
사전에 구성된 테스트 케이스와 CI/CD를 통해 진행된다.

TDD

자동화된 반복 테스트를 사용하는 방법으로, 작은 단위의 테스트 케이스를 작성하고 코드가 수정될때마다 이를 통과하는지 테스트하게 된다. 코드를 작성하기 전에 먼저 테스트를 작성한다. 테스트 코드를 만들면서 목표를 명확하게 확인할 수 있다. 최소한의 필요한 것만을 점검하고, 필요없는 코드들을 없애서 낭비를 줄인다.

Agile

신속하고 반복적인 사이클을 통해 고객에게 소프트웨어를 지속적으로 제공해나가는 소프트웨어 개발 방법론, 철학 디자인이나 문서보다는 코드에 집중하며, iterative approach를 활용한다.

XP (Extreme Programming)

애자일에 있어 개발 방법론으로서 자주 사용 개발과 배포 주기를 아주 짧게 만들고 이를 반복하여 고객의 요구를 지속적으로 반영하고 수정해나가는 방법. 고객의 요구사항을 유저 스토리로 만든다음, 이를 바탕으로 2~4주간의 개발 후 릴리스해서 평가한다.

Scrum

애자일에 있어 관리 방법론에 해당. 반복적인 개발의 관리에 초점을 둔다. sprint 사이클을 기반으로 반복적인 개발을 진행하며, Scrum이라 불리는 데일리 미팅을 통해서 팀원 전체의 가시성을 높이고 협업을 진행한다.

장점

고객의 변화하는 요구사항에 빠르게 대응이 가능하다 기존의 모델보다 개발의 오버헤드 (ex. 문서화) 를 줄여 개발 속도를 높일 수 있다. rework 비용을 절감하여 빠른 피드백이 가능하다

단점

대규모 프로젝트에는 제한이있다. 외부적인 규칙이나 제한등이 많지 않아야 한다. - 추후 제한으로 인해 전체 아키텍쳐를 바꾸는등의 행위가 매우 어렵다 agile은 뛰어난 역량의 개발자와 팀이 필요하지만, 모든 인원이 이것을 갖추기가 힘들다.

MSA

마이크로서비스(독립적인 배포와 확장이 가능한 단위)를 지원하는 아키텍쳐.
적용목적에 최적화된 단위로 나누어 설계에 반영하는 것이 중요하다.

애플리케이션 관점

구축하고자하는 비즈니스 프로세스를 이벤트 중심으로 분석하여 서비스별로 API, data, ui 를 설계한다.

아키텍쳐 관점

에서는 api gateway 이벤트 처리, 독립 테스트 및 배포 체계등이 필요하다.
MSA를 위해서는 클라우드와 데브옵스가 뒷받침 되어야 한다.

HPC 하이 퍼포먼스 컴퓨팅

고성능 컴퓨팅은 여러 컴퓨팅 서버의 프로세스를 활용하여 방대한 양의 데이터를 빠른 속도로 처리하는 시스템. AI와 같이 높은 컴퓨팅 성능이 요구되는 작업들에 활용하기 적합하다.

AWS Labmda

FaaS 서비스. function이나 메소드 단위의 서비스를 제공하는 것으로, 이벤트에 대한 응답 코드를 실행할 수 있는 서비스. 예를 들어 Rest API 호출이 있으면 이에대한 함수 코드를 실행시켜서 결과를 반환시켜 준다.

단점

콜드 스타트 지연 - 준비시간이 길다
무거운 프레임워크 사용이 어려움
제한된 리소스

장점

비용 절감- request가 있을때만 작동하여 비용절감 가능
확장성과 탄력성 - 필요한 트래픽의 양에따라 서비스의 조절을 통해 안정적인 제공이 가능

WSGI 위스키 의 역할

웹 서버(Nginx 등)와 웹 어플리케이션(장고 등) 간의 인터페이스 역할을 한다.

컨테이너

어떤 환경에서든 어플리케이션을 실행할 수 있도록 실행에 필요한 모든 요소들을 패키징하고 격리하는 기술

장점

어플리케이션의 배포와 관리가 간단해진다
격리나 확장성이 좋아서 MSA에 도입하기 좋다
커널만을 공유하는 가상화 수준이기 때문에 성능 오버헤드가 적다

디지털 트랜스포메이션

기존의 비즈니스 수동 시스템이나 프로세스에 IT기술을 통합하는 프로세스.
이러한 디지털 트랜스포메이션에 클라우드가 아주 중요한 역할을 한다.

CI / CD 란

CI 컨틴뉴어스 인테그레이션

빌드 및 테스트 자동화 과정. 새로운 코드 변경사항이 자동으로 빌드 및 테스트 되어 효율적인 오류탐지가 가능하다.

CD 컨틴뉴어스 딜리버리, 디벨롭먼트

배포 자동화 과정. 새로운 코드 변경사항이 자동으로 배포되어, 휴먼 에러를 최소할 수 있다. 사용자에게 빠른 제공이 가능하다.
파이프라인 관리 예시 - Jenkins 웹훅 등 트리거가 발동되면 파이프 라인 스크립트를 통해 자동화된 과정을 실행

장점

처음부터 확장이 용이한 구조로 만들기 때문에 향후 빠른 구축 및 유연한 확장 가능
장기적 관점에서 아키텍처 운영과 확장 비용의 절감
보안 / 운영의 관점에서 균일한 정책 반영과 손쉬운 대응 가능 - 네트워크의 분리나 권한 관리 등

단점

최초 구성 시 도입 비용이 증가
최초 아키텍트에 대한 복잡성이 증가

Just an developer with drinks
2022 HyeonDong, Powered By Gatsby.