DevOps를 사용하여 여러 환경을 관리하는 방법

8986 단어 devopswebdev
대부분의 DevOps 설정에서 파이핑에 여러 환경이 있습니다.병합된 브랜치나 태그 브랜치를 게시하는 시간에 따라 환경을 변경할 수 있는 조건이 있을 수 있습니다.생산 환경 외에도 많은 원인이 있는데, 가장 큰 원인은 테스트이다.
조직마다 하는 일이 조금씩 다르다는 것을 명심하세요.여기에서 소개한 환경보다 더 많은 환경을 보거나 같은 이름이 없을 수도 있습니다.중요한 부분은 각 환경의 용도를 이해하는 것이다.그들은 서로 다른 서비스 접근 수준과 서로 다른 공공 접근을 할 것이다.

볼 수 있는 환경


발전


개발 환경은 마치 당신의 로컬 환경에서 업그레이드된 것과 같다.로컬 이외의 다른 곳에서 작업하는지 확인하기 위해 작은 변경 사항을 배치할 수 있습니다.코드가 완벽하게 작동하지 않아야 이 환경에 배치할 수 있습니다.새 노드가 애플리케이션과 어떻게 통합되는지 테스트하고 CORS 문제를 우회해야 할 수도 있습니다.
당신들이 하나의 특성이나 버그 방법을 테스트할 때, 이 환경의 다른 개발자와 함께 큰 특성을 개발할 수 있습니다.그것은 로컬 환경이 허용할 수 있는 것보다 더 많은 다른 서비스에 접근할 수 있는 고급 모래상자와 같다.

등단하다


대부분의 경우, 이것은 당신의 코드가 생산 환경에 납품되기 전의 위치입니다.모든 기능이 거기에 있고 아무런 후퇴도 없도록 코드 심사를 받고 단독 테스트를 시도해야 한다.무대에 배치된 변경은 아무런 문제가 없을 것이다.
이것은 당신의 통합 테스트가 실행되는 곳입니다. 모든 제3자 서비스는 그 중에서 필요한 비밀을 얻을 수 있습니다.일부 회사들은 우리가 얻을 수 있는 생산 환경에 가장 가깝기 때문에 무대에 오르기 위해 완전히 독립된 서비스를 설치할 것이다.
코드가 임시 저장 상태에 있으면, 모든 데이터가 예상대로 불러왔는지, 서비스에서 정확한 응답을 받았는지 확인할 수 있습니다.혼돈 공사 테스트를 실행하기 좋은 곳입니다. 시스템이 얼마나 튼튼한지, 사용할 수 있는 자원이 있는지 확인하기 위해서입니다.스테이션 서버의 사용 가능한 자원은 일반적으로 생산 부서의 사용 가능한 자원보다 낮기 때문에 성능 테스트를 하기 위해 이 점을 기억하십시오.

품질 보증


다양한 QA(품질 보증) 환경을 볼 수 있습니다.그들은 일반적으로 소프트웨어 테스트 엔지니어를 위해 설정되어 사용자 각도에서 응용 프로그램의 오류와 문제를 체계적으로 찾아낸다.이것이 바로 많은 변두리 사례 장면이 나타난 곳이다.
여러 QA 환경을 볼 때가 많은데, 그것들은 모두 다른 용도를 가지고 있다.하나는 테두리 사례 장면에 대한 설정일 수도 있고, 다른 하나는 자동 UI 테스트를 실행할 수도 있고, 다른 하나는 시험 중인 새로운 발표 기능이 있을 수도 있다.
이 환경들은 여러 가지 다른 이름을 가지고 있기 때문에 QA에 배치할 특정한 명령을 가진 파이프를 볼 수 없을 수도 있습니다.만약 이러한 환경이 당신이 종사하는 모든 프로젝트에 사용된다면, 가능한 한 빨리 그 구조를 이해하십시오.

생산


이것은 코드의 최종 환경이다.서버에 액세스하면 모든 변경 사항이 실시간으로 고객에게 제공됩니다.사용자 체험에 영향을 주지 않는 테스트가 많지 않다는 점에서 코드가 강한지 테스트하기 위해 최선을 다했습니다.
프로덕션은 어플리케이션의 사용자 작업 상태를 평가하는 일반적인 지표이므로 리소스가 가장 많이 사용될 수 있습니다.생산 환경에 직접 배치할 수 있는 사례는 드물다.특정한 상황에서 사용자에게 영향을 주는 주요 오류를 해결하기 위해 열 복구 프로그램을 받을 수 있습니다.
그렇지 않으면 코드 변경 사항을 다른 환경으로 보내는 것이 좋습니다.대부분의 CI/CD 파이프는 코드를 여러 환경에 병렬적으로 배치합니다. 그러면 테스트를 시작하기 전에 모든 환경의 배치를 기다리는 사람이 없습니다.

환경 간 데이터 처리


모든 환경에서 짝짓기를 유지하는 것은 그것들의 유용성을 유지하는 데 매우 중요하다.일치성이 필요한 주요 분야는 데이터다.만약 당신이 생산에서 데이터를 얻고 이를 모호하게 처리할 수 있다면, 이것은 가장 좋은 개발 근거가 될 것이다.이것이 바로 사용자가 본 것이지만, 모든 민감한 정보가 변경되거나 필터되었다.
가능하다면, 테두리 사례를 다시 만드는 데이터를 얻는 데도 도움이 될 것이다.QA 환경에 문제가 발생하면 문제의 데이터를 언제든지 사용할 수 있도록 시간을 들일 필요가 있습니다.이것은 어떤 환경에서는 어떠한 후퇴도 나타나지 않고 다른 환경에서는 나타나지 않는다는 것을 확보한다.
이러한 환경에서 데이터를 어떻게 처리할 계획을 세웠을 때 개발과 테스트가 더욱 쉬워지고 배치 과정을 가속화하는 데 도움이 될 것입니다.생산 데이터를 복제하고 수정하는 데 시간이 걸릴 수 있기 때문에 약간의 초기 투자가 있다.가능하다면, 프로그램이 예상대로 실행될 수 있도록 충분한 데이터를 가져오십시오.

각 환경 유지 관리


기왕 당신이 모든 환경의 용도를 알고 있다면, 당신은 또 다른 몇 가지 일을 고려해야 합니다.이러한 환경의 장기적인 유지 보수에서 누가 접근 권한을 가지고 있는지 확인하십시오.검토된 데이터를 사용하고 있을 수도 있지만, 모든 사람이 접근해야 하는 프로세스와 코드가 존재하지 않을 수도 있습니다.
또 다른 문제는 어떻게 예비 생산 환경에서 자원 분배를 처리하는가이다.개발 및 QA 환경에서는 운영 환경과 동일한 수의 서버 리소스가 있을 수 없습니다.이것은 하나의 다른 제한을 도입했기 때문에 당신은 생산에서 이러한 제한을 처리할 필요가 없습니다.
성능 문제를 해결하거나 서비스를 모니터링하려고 할 때 환경을 주의하십시오.이것은 실제 문제가 아니라 디버깅을 시도한 내용일 수도 있습니다.캐시를 깨끗하게 유지하고 사용하지 않은 모든 저장소를 삭제하며 코드를 실행하는 데 방해가 될 수 있는 다른 내용을 주의하십시오.

CD 단계에서 다른 환경에 배포


이 모든 환경에 배치하고자 할 때, 이것은 연속적인 교부 과정의 일부분일 수도 있습니다.이것이 당신의 파이프 안에서 어떤 모습일지 알기 위해서, 여기에 예가 하나 있다.
import conducto as co

def cicd() -> co.Serial:
    image = co.Image("node:current-alpine", copy_dir=".")

    cra_node = co.Exec("npx create-react-app random-demo")
    installation_node = co.Exec("cd random-demo; npm i; CI=true; npm test")
    build_node = co.Exec("npm build")
    staging_node = co.Exec("echo sent build artifact to staging on an AWS server")
    qa_node = co.Exec("echo sent build artifact to QA on a Heroku server")
    prod_node = co.Exec("echo sent build artifact to prod on a Netlify server")
    start_node = co.Exec("npm start")

    pipeline = co.Serial(image=image, same_container=co.SameContainer.NEW)

    pipeline["Make CRA..."] = cra_node
    pipeline["Install dependencies..."] = installation_node
    pipeline["Build project..."] = build_node
    pipeline["Deploy to envs..."] = co.Parallel()
    pipeline["Deploy to envs..."]["Staging"] = staging_node
    pipeline["Deploy to envs..."]["QA"] = qa_node
    pipeline["Deploy to prod..."] = prod_node
    pipeline["Start project..."] = start_node

    return pipeline

if __name__ == "__main__":
  co.main(default=cicd)


다른 생각


추적해야 할 부분이 많을 것 같지만, 모든 환경의 기대치를 이해하면 과정의 일부일 뿐이다.자격 증명과 권한이 최신 상태를 유지하고 기대치를 설정하면 여러 환경을 사용하면 사용자에게 더 좋은 코드를 제공할 수 있습니다.
너는 더욱 빨리 다른 사람으로부터 피드백을 얻을 수 있을 뿐만 아니라, 더욱 일치하게 빈틈과 안전 빈틈을 추적할 수 있을 것이다.그것은 모든 테스트와 통합을 진정으로 생산에 투입할 때 더욱 순조롭게 한다.
나에게 관심을 가져라. 왜냐하면 나는 줄곧 이런 물건과 다른 기술 주제를 발표하고 있기 때문이다.
어떤 도구를 먼저 검사해야 하는지 알고 싶으면 Conducto 를 시도하여 CI/CD 파이프를 가져오십시오.그것은 시동과 운행이 쉽고 심지어 현장에서 운행할 때 디버깅하기 쉽다.

좋은 웹페이지 즐겨찾기