DevOps world

Google Cloud Build와 Cloud Run을 활용한 Docker 이미지 빌드 및 배포

개요 소프트웨어 개발에서 빠르고 안정적인 빌드 및 배포는 성공적인 애플리케이션 개발의 핵심입니다. Docker와 같은 컨테이너 기술은 이를 가능하게 하는 주요 도구로 자리 잡고 있습니다. 오늘은 Docker에 익숙한 개발자들이 Google Cloud Build를 사용하여 Docker 이미지를 클라우드 환경에서 빌드하고, Google Cloud Run...

Jenkins pipeline deep deive - #3 Jenkins 파이프라인에서 병렬 Job 실행 시 발생하는 클로저 레이트 바인딩 문제 해결

Jenkins 파이프라인에서 여러 Job을 병렬로 실행할 때, Groovy의 클로저(clousure)와 관련된 레이트 바인딩(late binding) 문제로 인해 의도치 않은 Job이 실행되는 경우가 있습니다. 문제 상황: 병렬 실행 시 동일한 Job이 실행되는 버그 우선, JobEntity라는 클래스를 사용해 두 개의 Jenkins Job(A...

10. Rust 데이터 유형에 강력한 성능을 제공하는 Enum

Rust의 열거형(enums)에 대해 이야기해보려고 합니다. Rust에서의 열거형은 C 언어의 열거형과는 다르게 하스켈(Haskell)의 대수적 데이터 타입과 더 비슷합니다. 열거형을 정의할 때는 enum 키워드를 사용하며, 대문자로 카멜케이스로 된 이름과 해당하는 변형들을 중괄호 안에 나열합니다. Defining Enum 이렇게 정의한 열거형을...

8. 트레이트 이해와 Rust에서 trait의 역할

러스트의 트레이트는 다른 언어에서의 인터페이스와 유사한 공유 동작을 정의하는 강력한 메커니즘을 제공합니다. 트레이트의 세계로 들어가보고 러스트 프로그래밍에서의 중요성을 이해해봅시다. 트레이트 정의 우리가 여우를 나타내는 RedFox 구조체가 있다고 상상해봅시다. 여우들이 소리를 내는 것과 같은 공통 동작을 가지길 원합니다. 우리는 Noisy라는...

7. Rust struct 자료형

다른 언어에서는 클래스를 사용하지만, 러스트에서는 구조체를 사용합니다. 구조체는 데이터 필드, 메서드, 연관 함수를 가질 수 있습니다. 구조체와 그 필드의 구문은 struct 키워드로 시작하여, 대문자 카멜 케이스로 구조체의 이름을 작성한 뒤 중괄호로 둘러싸는 것으로 이루어집니다. 예를 들어, RedFox라는 구조체가 있다면 다음과 같습니다. st...

2. Rust에서 문자열 리터럴과 String 타입 간의 패턴 매칭과 비교 연산의 차이

Rust에서는 문자열 리터럴과 String 타입 간의 사용법이 다소 혼동스러울 수 있습니다. 특히 패턴 매칭과 비교 연산에서 이 차이를 명확히 이해하는 것이 중요합니다. 일반적으로 if arg == "sum"과 같은 비교 연산은 문자열 리터럴과 String 타입 간의 비교를 허용합니다. 이는 Rust가 문자열 리터럴을 내부적으로 &str 타입...