Terraform 기초: HCL 기본기
·
탐구 생활/Terraform
아무리 HCL 이 쉬운 DSL 이라곤 하지만 정확히 쓰고 읽기 위해서는 최소한의 공부가 필요하다. 우선 Terraform 을 설치하는게 우선이다.1. Terraform 설치 (업그레이드)가장 좋은 방법은 공식 사이트의 설치 가이드를 보고 설치하는 것이다.나는 mac 을 이용하고 brew 를 통해 설치, 삭제, 업그레이드를 관리하는 것이 용이하므로 brew 로 설치했었다. 그 결과 버전 1.8.2 가 설치되어 있는 것을 확인할 수 있었다.$> brew list terraform# /opt/homebrew/Cellar/terraform/1.8.2/bin/terraform$> terraform version# Terraform v1.8.2# on darwin_arm64 24년 11월 17일 기준 terrafo..
Terraform 소개
·
탐구 생활/Terraform
1. Terraform1.1 Terraform 이란?Terraform은 HashiCorp에서 개발한 무료 오픈소스 IAC 도구이다. IAC 개요 및 주요 도구에서 다룬 것과 같이 주로 인프라 프로비저닝에 사용되는 툴로써, 설치 파일은 단일 바이너리로 구성돼 있어서 빠르게 설정할 수 있다.Terraform의 가장 큰 장점 중 하나는 여러 플랫폼(프라이빗 클라우드와 퍼블릭 클라우드)을 아우르는 인프라 배포가 가능하다는 거이다. 예를 들어, 온프레미스 vSphere 클러스터부터 AWS, GCP, Azure 같은 클라우드 솔루션까지 지원한다.1.2 Terraform 과 HashiCorpHashiCorp 는 클라우드 인프라를 효율적으로 관리하고 자동화하기 위한 다양한 도구를 개발하는 회사이다. HashiCorp의..
IAC 개요 및 주요 도구
·
탐구 생활/Terraform
1. IAC(코드형 인프라)란?IAC(Infrastructure as Code)는 클라우드 인프라를 코드로 정의하고 관리하는 방식이다.기존의 클라우드 관리 콘솔을 통해 수작업으로 리소스를 프로비저닝(provisioning)하는 대신, IAC를 통해 코드로 정의하고 실행하여 리소스를 자동으로 생성, 구성, 업데이트, 삭제할 수 있다.IAC는 데이터베이스, 네트워크, 스토리지, 애플리케이션 구성과 같은 다양한 인프라 구성 요소를 코드로 관리할 수 있도록 해준다. 예를 들어, 기존의 셸 스크립트를 사용해도 되지만, 이 방식은 관리와 재사용이 어려우며 유지보수를 위해 개발 기술을 필요로 한다. 이러한 문제를 해결하기 위해 Terraform이나 Ansible과 같은 IAC 도구가 등장했다.2. 주요 IAC 도구 ..
python 사용자 지정 불변 객체를 만드는 3가지 방법
·
탐구 생활/python
사용자 지정 불변 객체이전 글에서는 사용자가 만든 클래스는 모두 가변 객체인것 처럼 설명되었다. 정말 사용자가 만든 클래스는 불변 객체가 될 수 없는 걸까?용자가 작성한 클래스를 불변 객체로 만들기 위해서는 다음의 조건이 충족되어야 할 것이다.새로운 attribute 를 추가하는것을 막는다.기존 attribute 를 변경하는 것 모두가 막는다.값을 기반으로 객체간 동등성을 비교하도록 재정의 한다.1. 새로운 attribute 추가 제한파이썬 객체는 별다른 설정을 하지 않는다면 attribute 를 dict 자료형에 저장한다. 그리고 dict 자료형은 값을 추가, 삭제할 수 있다. 아래의 예시를 보자. 자유로은 attribute 추가class MutableClass: value: str def ..
Python 가변 객체와 불변 객체
·
탐구 생활/python
Python의 가변 객체와 불변 객체Python에서 객체는 가변 객체(Mutable Objects)와 불변 객체(Immutable Objects)로 나눌 수 있다. 이 두 가지는 객체의 값을 변경할 수 있는지 여부에 따라 구분되며, 메모리 관리와 성능에 중요한 영향을 미친다. 1. 가변 객체 (Mutable Objects)특징값(내용)을 변경할 수 있음.동일한 객체를 참조하는 변수는 변경 사항을 공유.대표적인 가변 객체:list 리스트dict 딕셔너리set 세트사용자 정의 클래스 객체예제x = [1, 2, 3] # 리스트 객체 생성y = x # x와 y는 같은 객체를 참조x.append(4) # x의 값을 변경print(x) # 출력: [1, 2, 3, 4]print(y) ..
Spring 트랜잭션 파헤치기 (2) TransactionInterceptor
·
탐구 생활/SpringBoot 파헤치기
보호되어 있는 글입니다.
SpringBoot 코드 분석 - 자동설정 어노테이션
·
탐구 생활/SpringBoot 파헤치기
이전 글에서 SprinbBoot 3.3.4 코드를 분석할 순서를 정했다.spring-boot-autoconfigure:http 를 까보던중 SpringBoot 를 이용해 코드를 쓸때 직접적으로 사용하지 않았던 생소한 어노테이션들이 있어서 우선 이 어노테이션들을 정리한다. 그 목록은 다음과 같다.@AutoConfiguration@AutoConfigurationBefore, @AutoConfigurationAfter@ConditionalOnClass, @ConditionalOnMissingBean그리고 이렇게 공부한 내용이 실무에서는 어떤식으로 영향을 끼치고 있는지 살펴본다.어노테이션 살펴보기1. @AutoConfiguration설명이 어노테이션이은 해당 클래스가 클래스 스프링 부트 프레임워크에 의해 자동으..
테이블 파티셔닝 적용기
·
탐구 생활/개발 탐구
왜 DB 테이블 파티셔닝을 도입했나프롭테크 회사에서 부동산 중개사들이 사용하는 솔루션, 내부 부동산 투자 개발팀이 사용하는 솔루션을 만들고 운영주입니다. 이러한 솔루션을 위해 부동산 공공데이터 베이스를 구축, 운영중인데 아직 경험이 부족하여 더 나은 서비스를 제공하기 위해 DB 에 대해 공부하고 있습니다. 고작  1+a 년동안 부동산 데이터를 다룬 제가 파악한 특성은 (1) 데이터 양(Volume)이 많다, (2) 그렇게 양이 많은 데이터가 다양하다는 점입니다.얼핏보면 빅데이터의 3V(Volume, Velocty,  Variety) 가 생각나는 특징이죠? 하지만 엄연히 말하자면 다릅니다. 양이 많은 것은 맞지만 TB 단위로 많은 것은 또 아니고, 다양하지만 데이터의 형태(정형, 반정형, 비정형) 가 다양..