Thumbnail
BEST
보안 · 네트워크 보안

[2024] 실무에서 사용하는 클라우드 프로그래밍 (AWS, Python, Terraform, 보안) 대시보드

(5)
16개의 수강평 ∙  362명의 수강생

66,000원

지식공유자: 천강민
총 68개 수업 (8시간 38분)
수강기한: 
무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유
천강민 프로필
Terraform 1.8 신규 기능 소개
천강민 23일 전 (23일 전 수정됨)

안녕하세요.

실무에서 사용하는 클라우드 프로그래밍 강사 천강민입니다.

Terraform 1.8 버전에서 provider-defined functions 라는 기능이 출시 됐습니다.

간단히 얘기하면, 프로바이더 레벨에서 함수를 지원하는건데요. 바로 예시를 보면,

terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
    }
  }
}

provider "aws" {}

# result: 
# {
#   "partition": "aws",
#   "service": "iam",
#   "region": "",
#   "account_id": "444455556666",
#   "resource": "role/example",
# }
output "role" {
  value = provider::aws::arn_parse("arn:aws:iam::444455556666:role/example")
}

# result: 
# {
#   "partition": "aws",
#   "service": "elasticloadbalancing",
#   "region": "us-east-2",
#   "account_id": "123456789012",
#   "resource": "loadbalancer/app/my-load-balancer/1234567890123456",
# }
output "elb" {
  value = provider::aws::arn_parse("arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/my-load-balancer/1234567890123456")
}

(미쳤다...)

나온지 얼마 안된 기능이기 때문에 기능이 확실히 많이 부족하지만, 선언형 언어를 다양한 내장함수를 통해 절차적으로 사용해야하는 경우가 있었는데(split 후에 인덱스 접근해서 local에 저장하고...), 조금 더 선언적으로 지원이 되어가는 것 같습니다.

매우 따끈따근한 기능이라서 엄청 간단합니다. 혹시 보실 분들은 링크 참고하세요!

별별 함수들이 생겨날걸 생각하니 그 동안 내장함수 찾아서 구현했던 것들에 대해 보상받은 기분이네요. 해당 내용은 조금 더 파악해보고 별도로 강의 제작하여 업로드도 진행 예정입니다!

감사합니다.

다른 댓글 보기(2)
천강민 프로필
Terraform 1.7 신규 기능(Mocks) 및 주요 변경점 공지
천강민 3달 전 (3달 전 수정됨)

안녕하세요.

실무에서 사용하는 클라우드 프로그래밍 강사 천강민입니다.

Terraform 1.7 버전이 릴리즈 됐습니다. 관련 공지는 여기서 볼 수 있습니다.
생각보다 (크게 스트레스 받을만한) 큰 변화가 생겼는데요.

  1. 테스트 이후 모듈이 삭제되는 순서가 변경됩니다.

    1. 기존

      1. 메인 상태 파일

      2. 각 모듈별 상태 파일(역순)

      3. 그렇기에 모듈을 참조하여 테스트 작성 시, 메인 상태 파일에 적재되는 리소스들에 의존 X

    2. 변경

      1. run 블록 역순으로 상태 파일 삭제

      2. 그렇기에 일찍 삭제되는 리소스들에 의존 X

    3. 간단한 예시

      1. image

      2. 예전에는 위와 같이 작성할 수 없었지만, 1.7부터는 가능합니다.

  2. Mocks (in beta)

    1. 간단히 말씀드리면 실제 프로바이더, 리소스, 데이터, 모듈을 생성/삭제/참조하지 않고 특정한 값을 정의하여 사용하는 기능입니다.

    2. 미리 살펴본 결과, 간단히 배포 또는 생성되는 형태를 mock 데이터로 만들어서 넣어주면 이전보다 훨씬 빠르게 테스트가 가능할 것으로 보입니다.

    3. 예시는 아래와 같습니다.

    # main.tftest.hcl
    
    mock_provider "aws" {
      override_data {
        target = module.credentials.data.aws_s3_object.data_bucket
        values = {
          body = "{\"username\":\"username\",\"password\":\"password\"}"
        }
      }
    }
    
    run "test" {
      assert {
        condition     = jsondecode(local_file.credentials_json.content).username == "username"
        error_message = "incorrect username"
      }
    }
    1. 데이터 블록의 결과를 만들고 run 블록을 통해 빠르게 테스트가 가능합니다.

  3. 1.7 릴리즈에 대한 후기

    1. 마이너 버전 한 번 만에 정말 중요한 로직을 변경한 것이 정말 마음이 아프게 느껴집니다. 혹시나 제 강의를 보시고 기존 삭제 상태를 기준으로 만드신 분들께 대신 사과를 말씀을 드립니다...

    2. 위의 이유 + in beta 상태이기에 Mocks에 대한 내용은 추후에 조금 더 성숙해지고 단단해지면 추가로 찍으려고 합니다. 다만, 어쨋든 출시된 내용은 전달드리는게 맞는 것 같기에 이렇게 새소식을 발행합니다.

감사합니다.

천강민 프로필
Python GIL(Global Interpreter Lock) 강의 추가 공지
천강민 6달 전 (6달 전 수정됨)

안녕하세요.

실무에서 사용하는 클라우드 프로그래밍 강사 천강민입니다.

Python GIL과 관련해 조금 더 자세한 영상을 촬영 후 업로드 했습니다.

사실 Python을 통해 엄청난(?) 어플리케이션을 만들려는게 아니라면 크게 신경쓰지 않아도 되는 내용이긴 하지만, 앞에서 (편의를 위해)설명드렸던 것들에 대해서 정정도 필요하고, 좀 더 자세히 알면 프로젝트 시에 어떤 모듈을 선택해야 할지, 왜 이렇게 동작하는지를 알 수 있다고 생각해서 추가하게 됐습니다.

참고 부탁드립니다.
감사합니다.

천강민 프로필
Terraform test 기능 관련 강의 추가 공지
천강민 6달 전 (6달 전 수정됨)

안녕하세요.

실무에서 사용하는 클라우드 프로그래밍 강사 천강민입니다.

Terraform 1.6 에서 추가된 테스트 기능 관련하여 강의를 추가 했습니다.

주요 추가 내용은 아래와 같습니다.

  1. 테라폼 기존 테스트 방법에 관한 간단한 설명

  2. Custom Conditions 설명

  3. .tftest.hcl 파일 기본 문법

  4. 테스트 관련 내용(성공/실패 테스트 등)

  5. 테스트 진행 중 상태(state) 관리, 실행/삭제 순서

  6. 테스트 전략


참고 부탁드립니다.
감사합니다.

천강민 프로필
Python 및 Terraform 버전별 신규 기능 관련 공지
천강민 7달 전 (7달 전 수정됨)

안녕하세요.

실무에서 사용하는 클라우드 프로그래밍 강사 천강민입니다.

강의에서 사용한 Python / Terraform 버전 관련하여 공지하기 위해 새소식을 발행하게 됐습니다.

[Python]

Python은 현재 3.12 까지 공개가 된 상황입니다. 다만, (지극히 제 주관적인 판단으로) 아직까지는 새롭게 추가된 기능들에 대해서 현재 강의에 추가할 내용은 없다고 생각되어 업데이트가 없는 상태입니다.
3.10 ~ 3.12 버전의 주요 변경점들은 아래와 같습니다.

  1. Python 속도 향상(하지만 은탄환은 없다) -> 3.11 / 3.12

    1. 그럼에도 특정 작업은 느껴질 정도로 빨라졌습니다.

  2. 타입 관련 많은 기능 추가 및 강화 -> 3.10 ~ 3.12

    1. 자바(타입)스크립트의 길을 가나?

  3. 인터프리터별 GIL 도입 -> 3.12

    1. 다른 언어와 같이 멀티쓰레드를 활용하는 날이 올까?

    2. 현재는 Python C API 를 통해서만 활용 가능합니다.

      1. 순수 C로 작성한 라이브러리들 속도나 효율이 개선될듯?(개선한다면)

정도 입니다. 물론 이외에도 다른 많은 것들이 사용 중단되고, 개선(또는 추가)되기도 했지만, 당장 알아야 할 정도로 중요한 내용은 없는 것으로 보입니다.

추가로 AWS Lambda에서도 현재 3.11 까지 지원하고 있습니다.

어찌됐던 현재 계획으론 Python 3.13이 발표(release)되면 관련 강의를 추가 예정입니다.

[Terraform]

테라폼 또한, 1.2 ~ 1.5 버전을 거치며 다양한 기능들이 추가 됐습니다.

  1. variable에 optional 사용 가능 -> 1.3

    1. Python에서 obj.get("key", "default") 와 같은 사용 가능

  2. null_resource를 대체하는 기본 terraform_data -> 1.4

    1. 추가적인 프로바이더 다운로드 없이 대체 가능

  3. 코드를 통한 import 가능 -> 1.5

  4. check 블록을 통한 검증 강화 -> 1.5

다만, 위의 기능들은 모두 런타임(실행 시)에 동작하는 것들이기에 크게 소개해드릴 필요가 없다고 느끼고 있었습니다만,

Terraform 1.6 버전에서 드디어 테스트 관련 기능이 출시됐습니다. 기존의 테스트는 1) 런타임과 분리되지 못하거나, 2) 여러가지 오픈소스들을 통해서만 가능했습니다. 하지만, 해당 기능의 출시로 인해 이제 별도의 오픈소스를 사용하지 않더라도 테스트가 가능하게 됐습니다.

해당 기능은 다음주 중에 강의로 업데이트하려고 합니다. 참고 부탁드립니다.

감사합니다.