IBM Cloud Docs
Heroku에서 Code Engine 마이그레이션 시작하기

Heroku에서 Code Engine 마이그레이션 시작하기

IBM Cloud® Code Engine에 대한 Heroku 사용자를 시작합니다.

Code Engine은 컨테이너화된 워크로드를 실행하는 완전 관리형 서버리스 플랫폼입니다. Code Engine은 소스 코드에서 컨테이너 이미지도 빌드합니다. Code Engine 환경은 호스팅하는 데 필요한 인프라가 아닌 코드 작성에 집중할 수 있도록 설계되었습니다.

Code Engine은 다음과 같은 주요 목표를 염두에 두고 설계되었습니다.

  • 코드에 집중합니다. Code Engine은 단순화된 개발자 환경을 제공합니다. 기본 인프라에 대해 배우거나 관리할 필요가 없습니다.
  • 자동 스케일링, 유휴 시 0으로 스케일링, 관리 서비스 및 보안과의 원활한 통합 등 최신 런타임 특성을 지원합니다.
  • 12단계 앱, 이벤트 기반 기능, 완료 시까지 실행 일괄처리 작업 등 모든 클라우드 네이티브 기반 애플리케이션을 지원합니다. 컨테이너화할 수 있는 애플리케이션일 경우 Code Engine에서 실행할 수 있습니다.
  • 실제로 사용하는 리소스에 대해서만 비용을 지불합니다.

헤로쿠 출신이라면 이러한 기능 중 상당수가 익숙하게 들릴 것입니다. 그러나 Code Engine 0으로 확장할 수 있고 요금이 발생하지 않는 애플리케이션을 포함하여 Heroku가 제공하는 것 이상의 기능을 사용할 수 있는 몇 가지 새로운 기능도 포함되어 있습니다. 또한 Code Engine 에는 무료 티어를 포함하는 종량과금제 계정이 필요합니다. 따라서 사용자 환경의 구문적 차이를 경험하고 나면 Code Engine에서 애플리케이션을 편안하게 사용할 수 있습니다.

목표

  • Code Engine Heroku의 유사점을 알아보세요.
  • Code Engine에서 앱을 배치하는 일반 프로세스를 알아봅니다.
  • Code Engine을 사용하여 로컬 시스템의 코드에서 애플리케이션을 배치합니다.

전제조건

Code Engine을 시작하기 전에 계정을 설정하고 CLI를 설치해야 합니다.

  • 모든 Code Engine 사용자에게는 종량과금제 계정이 있어야 합니다.

  • Code Engine은 콘솔을 통해 사용할 수는 있지만, 이 문서에서 다루는 예는 명령행에 중점을 둡니다. 따라서 Code Engine CLI를 설치해야 합니다.

    ibmcloud plugin install code-engine
    

    자세한 정보는 Code Engine CLI 설정을 참조하십시오. CLI에 대한 자세한 정보는 Code Engine CLI 참조를 참조하십시오.

Heroku및 Code Engine 용어 비교

Code Engine}}에서 앱 배포를 시작하기 전에 Code Engine 대한 기본 사항을 알아보세요. 다음 표에서는 Cloud Foundry Code Engine 몇 가지 주요 용어 차이점에 대해 설명합니다.

용어
헤로쿠 Code Engine 설명
해당사항 없음 리소스 그룹 및 프로젝트 워크로드 그룹입니다. 각 그룹에 들어가는 워크로드의 특정 선택사항은 사용자가 정의합니다. "리소스 그룹"은 IBM Cloud 개념이며 "프로젝트"는 Code Engine에만 사용됩니다. 프로젝트는 워크로드 간에 격리 레벨을 제공합니다. 프로젝트 관리를 참조하십시오.
동적 컨테이너 다이노는 헤로쿠 코드를 실행하고 사용자를 위해 관리되는 경량 컨테이너입니다. Code Engine에서 기본 컨테이너는 Kubernetes 를 기반으로 하며 자동으로 관리됩니다.
애플리케이션 애플리케이션(앱) 예를 들어, REST API, 웹 페이지 요청 또는 이벤트에서 HTTP 요청에 응답하는 워크로드입니다. Code Engine 에서는 애플리케이션이 코드의 일부로 HTTP 서버를 포함해야 합니다. Code Engine 애플리케이션은 수신 로드에 따라 자동으로 스케일링 (위로 및 아래로) 합니다. 필요한 경우 최소 및 최대 스케일을 구성할 수 있습니다. 기본적으로 애플리케이션은 포트 8080에서 수신 대기합니다. 이 동작은 콘솔 또는 CLI --port 플래그를 사용하여 대체할 수 있습니다. Code Engine에서 앱 작업을 참조하십시오.
해당사항 없음 작업 또는 일괄처리 작업 작업은 실행 코드의 인스턴스를 하나 이상 병렬로 실행합니다. HTTP 요청을 처리하는 애플리케이션과 달리 작업이 한 번 실행되고 종료되도록 설계되었습니다. 작업을 작성할 때 작업이 실행될 때마다 사용될 워크로드 구성 정보를 지정할 수 있습니다. 작업 및 작업 실행에 관한 작업을 참조하십시오.
heroku creategit push heroku main 또는 heroku container:push web app create 애플리케이션을 작성하는 프로세스입니다. Heroku를 사용하여 앱을 작성하고 여기에 코드를 푸시합니다. 코드는 해당 단일 단계에서 빌드 및 배치됩니다. Code Engine 사용하면 이미지 리포지토리에서 컨테이너 이미지를 가져오거나, GitHub, 등의 리포지토리에서 소스 코드를 빌드하거나, 시스템의 로컬 파일에서 코드를 가져올 수 있으며, 모두 명령 한 번으로 가능합니다. Docker파일을 기반으로 코드를 빌드하거나 Paketo 빌드팩을 사용할 수 있습니다. Code Engine 콘솔뿐만 아니라 CLI에서도 단일 단계로 빌드할 수 있습니다. 빌드 계획을 참조하십시오.
사용자 정의 도메인 사용자 정의 도메인 맵핑 두 서비스 모두 워크로드에 대한 외부 URL을 정의하고 관리할 수 있습니다. Code Engine 는 콘솔에서 사용자 정의 도메인 맵핑 에 대한 지원을 제공합니다. IBM Cloud Internet Services 또는 선택한 기타 도메인 제공자를 통해 사용자 정의 도메인 을 추가할 수도 있습니다.

Code Engine에 대한 추가 용어 및 기능은 Code Engine 을 참조하십시오.

IBM Cloud에 로그인

다음 단계에 따라 IBM Cloud 계정에 로그인하고 리스소 그룹을 대상으로 지정하십시오.

  1. IBM Cloud에 로그인하십시오.

    ibmcloud login
    
  2. 다음 명령을 실행하여 리소스 그룹을 대상으로 지정하십시오. 리소스 그룹 목록을 가져오려면 **ibmcloud resource groups**를 실행하십시오.

    ibmcloud target -g <resource_group>
    

    출력 예

    Targeted resource group default
    

프로젝트 작성

Code Engine "project" 는 관련 워크로드를 논리 콜렉션으로 그룹화합니다. 회사 조직 구조, 워크로드 간의 종속성 또는 개발 환경 대 테스트 환경 대 프로덕션 환경과 같이 자신에게 맞는 기준에 따라 워크로드를 서로 다른 프로젝트로 그룹화할 수 있습니다. 그런 다음 이 프로젝트에 대한 액세스를 구성 할 수 있습니다. 단일 프로젝트 내의 워크로드는 사설 네트워크를 공유하고 프로젝트의 보안 경계 내에서 격리됩니다. 프로젝트 내의 모든 워크로드는 클러스터 외부의 워크로드에 표시될 염려 없이 서로 자유롭게 통신할 수 있습니다. 서로 다른 프로젝트의 워크로드가 서로 통신하려면 인터넷 또는 내부 IBM 사설 네트워크를 사용해야 합니다. 자세한 정보는 Code Engine 애플리케이션의 가시성에 대한 옵션 을 참조하십시오.

Code Engine에 sample-proj이라는 프로젝트를 작성하십시오.

ibmcloud ce project create --name sample-proj

출력 예

Creating project 'sample-proj'...
ID for project 'sample-proj' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'.
Waiting for project 'sample-proj' to be active...
Now selecting project 'sample-proj'.
OK

프로젝트가 컨텍스트에 맞게 선택되었으므로 모든 후속 애플리케이션 관련 명령은 이 새 sample-proj 프로젝트의 범위 내에 있습니다.

애플리케이션 배치

이 샘플 애플리케이션은 샘플 GitHub 저장소에서 코드를 가져옵니다. 이 코드는 application create 명령을 사용하여 Code Engine 에 코드를 푸시하는 간단한 코드입니다. 애플리케이션의 이름과 소스 코드의 위치를 제공해야 합니다. 다음 예제에서는 buildpack 전략을 사용하고 현재 디렉토리 . 에 소스 코드의 위치를 제공하는 myapp 애플리케이션을 만듭니다.

ibmcloud ce app create --name myapp --build-source https://github.com/IBM/heroku-to-code-engine

출력 예

Creating application 'myapp'...
Packaging files to upload from source path '.'...
Submitting build run 'myapp-run-220999-210706331'...
Creating image 'private.us.icr.io/ce--6ef04-khxrbwa0lci/app-myapp:220418-0207-askql'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220000-210706331' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK

https://myapp.abcdbwa0lci.us-south.codeengine.appdomain.cloud

모두 완료되었습니다. 이제 인터넷 연결 애플리케이션이 작성되었습니다. 애플리케이션의 코드 자체는 Heroku 애플리케이션에 사용되는 것과 동일하며, Code Engine 명령만 약간 다를 뿐입니다.

위의 app create 명령을 더 자세히 살펴보겠습니다. Notice that the output of the app create command provides information about the progression of the build run before the app is created and deployed.

  1. Code Engine이 (이미지에서 직접 가져오는 대신) 소스 코드에서 애플리케이션을 생성하라는 요청을 받습니다.
  2. {{{site.data.keyword.codeengineshort}} 선택한 프로젝트와 연결된 IAM 서비스 ID 및 API 키를 확인합니다. 이 서비스 ID는 IBM Cloud Container Registry 대한 읽기 및 쓰기 권한이 있어야 합니다. 서비스 ID가 없는 경우 Code Engine에서 작성합니다. 이 서비스 ID는 동일한 프로젝트에서 실행되는 후속 Code Engine 빌드 요청에 사용됩니다.
  3. 이 예에서는 공개 GitHub 리포지토리 --build-source https://github.com/IBM/heroku-to-code-engine)에서 코드를 빌드합니다. 소스 코드는 아카이브 파일에 압축되어 계정의 IBM Cloud Container Registry 인스턴스 내의 관리 네임스페이스에 업로드됩니다. 로컬 빌드의 경우 IBM Cloud Container Registry만 대상으로 지정할 수 있습니다. 할당량 한계 및 액세스에 대한 정보를 포함하여 IBM Container Registry에 대한 자세한 정보는 IBM Cloud Container Registry 시작하기를 참조하십시오.
  4. Code Engine이 소스 코드를 이미지로 빌드합니다. 소스 이미지는 소스 아카이브 파일과 동일한 네임스페이스에 작성됩니다.
  5. 빌드가 완료되면 애플리케이션이 배치됩니다. 제공된 URL에서 애플리케이션에 액세스할 수 있습니다.

Code Engine 사용하면 자동 확장 및 청록색 업데이트 롤아웃과 같은 Heroku와 동일한 많은 기능이 자동으로 제공되지만, 애플리케이션이 활성화되지 않은 경우에도 요금이 부과되지 않도록 0으로 축소하는 등의 최신 기능의 이점도 누릴 수 있습니다.

소스 코드를 빌드하기 위한 옵션에 대해 자세히 알고 싶으십니까? application createjob create 명령을 참조하십시오.

애플리케이션과 작업에 대해 자세히 알고 싶으십니까? Code Engine에서 앱 작업작업 및 작업 실행에 관한 작업을 참조하십시오.

정리

이 튜토리얼을 완료한 후에는 다음 명령으로 작성한 리소스를 정리할 수 있습니다.

애플리케이션 삭제

ibmcloud ce app delete --name myapp

앱을 삭제하면 연관된 빌드 파일도 삭제됩니다.

마지막으로 빌드가 IBM Cloud Container Registry에서 작성한 이미지를 삭제하십시오.

  1. IBM Cloud 콘솔에서 레지스트리 로 이동하십시오.
  2. 애플리케이션 이름을 검색하여 애플리케이션과 연관된 아카이브와 이미지를 찾으십시오.
  3. 아카이브 및 이미지를 선택한 후 삭제하십시오.

동영상 대본

안녕하세요, 저는 JJ Asghar이고 IBM Cloud의 개발자 지지자입니다. 최근에, 여러분은 헤로쿠가 자유로운 계층에 대한 정책을 바꾸는 것에 대해 들은 적이 있을 것입니다. 이로 인해 많은 개발자에게 문제가 발생하고 있으므로 몇 가지 단계만 거치면 IBM Cloud 의 Heroku에서 Code Engine 으로 마이그레이션할 수 있는 방법을 설명하기 위해 잠시 시간을 내 보겠습니다. 자, 이제 게임을 시작하여 시스템을 얼마나 빠르게 작동시킬 수 있는지 살펴보겠습니다.

우선, 이것이 2022년 11월 28일부터 허로쿠의 공식 블로그에 있는 실제 라인입니다. 무료 제품 플랜을 제공하는 것을 중단하고 무료 동과 데이터 서비스를 중단할 계획입니다. 영향을 받는 사용자에게 일련의 이메일 커뮤니케이션을 발송할 것입니다. 이는 많은 초급 초보자 웹 애플리케이션에 있어서 도전적인 일입니다. 개인적으로 오늘 처음 시작했을 때 헤로쿠를 사용했다는 사실을 알고 있기 때문에 이는 많은 사람들에게 매우 큰 인기를 얻었으며 헤로쿠에서 Code Engine으로 얼마나 쉽게 변환할 수 있는지 보여드리고 싶습니다.

첫 번째로, 제가 만든 작은 응용 프로그램을 보도록 하겠습니다. 여기서 애플리케이션을 시작하면 좋은 작은 플라스크 앱을 사용할 수 있습니다. Python 또는 Flask가 무엇인지 모르는 경우 이는 python이 표준 포트에서 애플리케이션을 실행할 수 있는 형식입니다. 이 애플리케이션이 있다고 가정해 보겠습니다. "Hello World !" 라고 표시되어 있습니다. 이미 배치했으며 바로 여기서 확인할 수 있습니다. heroku.com에 놀라운 프로덕션 앱이 있습니다. "안녕하세요," 라고 쓰여 있고, 우리는 계속해서 그것을 바꾸고 싶습니다. 계속 진행하여 "Hello Moving from Heroku to Code Engine" 으로 빠르게 업데이트하기 위해 이를 업데이트하려고 했습니다.

어서 나가서 나가자. git add . git commit -m “update hello line” 그리고 나서 저는 계속해서 밀어붙일 것입니다. 여러분이 보통 하시는 것처럼 코드를 헤로쿠 (Heroku) 에게 푸시하는 것입니다. 이 프로세스가 Code Engine내부의 프로세스와 정확히 동일하다는 것을 보여드리겠습니다. 여기서 수행할 작업은 새 프로젝트를 작성하는 것입니다. 먼저 IBM Cloud 에 로그인한 후 새 프로젝트를 작성하고 배치하여 작동하는지 확인합니다.

이제 작업 코드가 있는지 확인하고 다시 로드하기 위해 먼저 헤로쿠에서 Code Engine 으로 이동하여 코드가 작동하는지 확인합니다. 좋습니다.

이제 이 작업의 일부로 Code Engine 을 가져오도록 하겠습니다. 우선 IBM Cloud 에 로그인해야 합니다. 이제 IBM Cloud에 로그인하겠습니다. IBM Cloud 비디오를 설정하지 않았거나 IBM Cloud 계정을 설정하지 않은 경우 위를 보면 해당 링크가 표시되어야 합니다. 이 링크를 비디오에 넣습니다.

여기서 제 이름을 복사해서 암호를 받아 로그인하겠습니다. 보기에 아주 좋습니다. 완벽합니다. 이제 제가 할 일은 ibmcloud ce project create —name amazing product production app 입니다. 그래서 이것이 우리의 멋진, 작은 ... 먼저 대상입니다. 기본 리소스 그룹을 가져온 후 프로젝트를 작성하겠습니다. 이제 갑니다. 잠시만 기다려야 합니다. 완벽해야 합니다. 이제 원하는 대로 이름을 변경할 수 있습니다. 이는 단지 프로젝트에 대한 캐치올 (catch-all) 일 뿐이며, 이는 유용합니다. 그런 다음 다음 명령 ( ibmcloud ce app create —name pythonbackend — build-source . —strategy build packs ) 을 사용합니다.

이제 이미 requirements.txt가 있으므로 이 애플리케이션은 " python 애플리케이션입니다! 자, 그럼 어서 만들어 봅시다 ! " 라고 말했습니다. 좋은 일입니다. 보시다시피, 여기서 1단계를 밟고 있습니다. 빌드를 실행하는 것이 좋습니다. 이는 우리에게도 유용한 좋은 개인용 이미지를 만듭니다. 몇 분 정도 걸립니다. 이제 시작합니다. 대기하지 않고 이 작업을 수행하려는 경우 ( -nw), 이를 실제로 백그라운드에 넣고 시작될 때까지 대기한 후 이 build run get 실제 이름을 통해 확인할 수 있습니다. 우리가 이 라이브를 보게 될 것이기 때문에, 우리는 여기로 가서 이것을 할 것입니다.

완벽합니다! 자, 이제 이 URL을 열어 보겠습니다. 이 URL이 여기로 왔습니다.

" 헤로쿠에서 Code Engine으로 이동하는 중입니다.

모두 완료되었습니다. 저는 헤로쿠에서 했던 것과 똑같은 코드를 가지고 있었습니다. 저는 새로운 프로젝트를 만들었고, 애플리케이션을 만들었습니다. 그리고 그것을 푸시했습니다. 그리고 그것은 단지 작동했습니다. 여러분 자신이 그것을 가지고 무엇을 할 수 있을지 상상해 보세요. 이는 Code Engine 인 전원을 표시하며 무료 티어에서는 실제로 무료입니다. Heroku가 있었거나 있을 예정이거나 있을 예정이거나 있을 예정인 것처럼 미래에는 없을 것입니다. Code Engine 은 영원히 무료입니다. 이는 매우 훌륭하며, 여러분의 삶을 조금 더 쉽게 만들어 줄 것입니다.

시청해 주셔서 감사합니다. 궁금한 사항이 있으시면 Twitter 주소는 @jjasghar 이거나 awesome@ibm.com. 으로 이메일을 보내 주셔서 감사합니다. 제 직업은 성격이 좋은 괴짜가 되는 것이기 때문에 절대로 주저하지 않고 손을 뻗는 것입니다.

정말 감사합니다.

안녕히 계세요.