본문 바로가기

DevOps/Study

[DevOps challenge] Day02 DevOps engineer’s Role

Day02. DevOps engineer’s Role

90DaysOfDevOps/day02.md at main · MichaelCade/90DaysOfDevOps


개발자가 응용 프로그램에 대한 새로운 기능을 만든다. 이 애플리케이션을 실행하고 필요한 모든 서비스와 통신하도록 구성 및 관리되는 일종의 환경, 인프라 또는 서버가 있다. 가장 중요한 것은 이러한 기능들과 버그 수정을 제품에 어떻게 적용하여 최종 사용자가 사용할 수 있게 하는 것을 의미한다.

한번이 아니라 테스트와 자동화를 포함해 효율적이고 지속적으로 수행해야 한다.

그래서 앞으로 기본적인 개발 지식 ( 시스템, 도구 및 프로세스) 을 잘 이해하는 것이 핵심적이다.

리눅스, 컨테이너화(도커), 네트워크 를 공부해 나갈 것이다.


요약

5가지 중에 1가지만 요약했다.

• 출처 : What is DevOps? - TechWorld with Nana

애자일이던 폭포수던 제일 중요한 것은 요구사항[requirements]을 만족하는 것이다.

endless cycle of implements

코드를 수정할 아이디어가 생기면 → 코드를 개선 → 테스트 하고 → 빌드 → 배포→ 문제가 없는지 관찰의 과정이 복된다.

DevOps

Making the process fast
With minimal bugs

소프트웨어 결함이 발생하는 이유

1) 운영팀과 개발팀관의 의사소통 문제

Role

Developers - coding

Operations - Deploy & Operate

각자의 역할이 다르므로 개발자들이 개발한 코드를 운영팀이 운영하지 적합하지 않았을 경우 돌려 보낸다던지의 비효율 발생 둘간의 협업을 위한 문서같은 것이 필요

명확하지 않은 둘 사이의 자동화

2) 이익의 갈등

Incentives

Developers - 빨리 새로운 것을 적용

Operations - 안정적으로 유지하는 것→ 앱을 사용하는 것이 가능한게 최우선

company

Deliver high-Quality apps to end users fast

3) Security

DevSecOps

4) Application Testing

Testing the app on different levels

Test specific features

End to End tests

Testing on different environments

performances tests

Can’t rely on automated tests fully!

5) Manual Work

  • 전통적인 방법 한계지식 공유 방법이 어려움회복하고 복구하기 더 어려운Manually preparing the deployment environmentManually configuring user access & permissions
  • Manually configuring Jenkins build jobs
  • Manually deploying app
  • 누가 언제 무엇을 시작할지 불투명하고 추적하기 어려움
  • 느리고 오류의 가능성이 있는 방법

Goal DevOps

Fully Automated!

Streamlined Processes!

위의 단계를 하나씩 없애는 것

어떻게

협업을 잘해야 함 . 매우 어려움

기본적으로 알아야 할 것들

Devlopment

개발자들의 형상 관리가 어떻게 되는지 알고 잇어야 함

how developers works

which git workflow

how application is configured

automated Testing

Linux

서버와 소통하는 방식이 리눅스인 경우가 많고 이를 알고 있어야 함

linux basics

comfortable using CLI

shell commands

linux File system

Server Management

Networking & Security

기본적인 네트워크 지식을 알고 잇어야 함

Firewall, Proxy Servers

Load Balancers

Http/ Https

IP/ DNS Name Resolution

DevOps vs IT Operations

understand and know the Basics

own professions

Containers

계속 등장하는 방법론 도커가 가장 유명함

  • virtualization

Build Automation & CI/CD

Build tools & package Manager

  • 패키지 매니저가 어떻게 작동하는지 알아야 함
  • maven, grandle, npm

Artifact Repository

👉 https://riothaid.tistory.com/186

아티팩트 : 소프트웨어 개발 프로젝트에서 생선되는 다양한 산출물 (ex. maven에서 빌드로 생성되는 프로젝트의 jar 확장자 결과)

아티팩트와 메타데이터를 저장/ 관리하는 장소를 아티팩트 저장소라고 함.→ 외부 라이브러리를 저장하기도 하지만 다른 개발자나 프로젝트 공유를 위한 배포 용도로 사용하는 저장소를 말함.

위의 링크에 자세하게 나와있다.

개발 단계의 저장소와 릴리즈 단계의 저장소를 분리시키고 개발 단계에서는 스냅샷을 타임스탬프와 같이 커밋하는 방식으로 버전을 관리한다. 개발자들끼리 파일 째로 왓다갓다 하던 것을 공유 저장소에 메타데이터로 저장 해놓고 필요시에 빌드 하는 것을 의미한다.

도커 이미지를 저장해 놓는 저장소

Build Automation Jenkins

deploy to server → continusos deployment

Cloud Provider

virtual infrastructure

Infrasturcture as a service

save costs

offer a range of sevices

platform-specific service

Container Orchestration

we need a more powerful

lear Kubernets

powerful, but complex

loft → self severvice kubernets cluster easily

Monitoring

추적 track performance

문제 해결

Infrastructure as Code

Scripting Language

bash powershell

know a scripting or programming language

Version Control

managing code

뭐부터 시작할지 모르겠다면 제일 많이 사용하는걸로 시작해라

이러한 툴들을 적절하게 결합하는 것이 DevOps engineer 의 역할이다

데브옵스란? - 마이크로소프트