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 단위로 많은 것은 또 아니고, 다양하지만 데이터의 형태(정형, 반정형, 비정형) 가 다양..
Java, SpringBoot 에서 Geometry 좌표 핸들링
·
탐구 생활/개발 탐구
프롭테크 회사를 다니다보니 지도 서비스를 자주 다룹니다.당연히 클라이언트 개발자가 지도 서비스를 더 많이 다루고 고생하는 분야이지만 필지, 행정동, 법정동의 모양정보(이하 공간데이터)를 뿌려주는 역할은 백엔드에서도 해야할 일이 있습니다. 백엔드 개발자라면 공간데이터 타입을 어떻게 DB 에 보관할지 궁금하는지, 내부 처리 성능은 어떠한지 궁금할 것입니다.이것 역시 다루고 싶은 주제지만 이 글에서는 공간데이터를 지도에 뿌리는 정도가 관심사이기 때문에 어떻게 보관하든 큰 문제는 아니겠죠.  Geometry 정보를 전달하는 방식그렇다면 DBMS 에 보관된 공간데이터를 어떤식으로 뿌릴까를 이야기해보겠습니다.여러 부동산 서비스의 클라이언트-서버 통신을 분석해보면 공간데이터를 뿌리는 방식은 크게 두가지로 나뉘는것 같..
AWS AutoScaling 수평 확장시 어플리케이션 자동 세팅
·
탐구 생활/개발 탐구
아직 백엔드 인프라쪽에 전문성이 높지 않아서 여러가지 시도를 해보고 있습니다. 그 중에서도 항상 저에게 의문을 던져주었던 AWS 의 오토스케일링 그룹을 가지고 놀아보고자합니다. 저에게 주어진 주된 의문은 (1) 트래픽이 증가해서 자동으로 인스턴스가 늘어나면 그 안에 서버도 복제되는가? (2) 서버가 복제된다면 포트포워딩, 라우팅 설정도 알아서 자동으로 되나? 아래와 같이 간단한 환경을 만들고 테스트를 해봤습니다. 직접 실험해본 결과 이 질문에 대한 대답은 "아니다" 였습니다. (1) 트래픽이 증가해서 자동으로 인스턴스가 늘어나면 그 안에 서버도 복제되는가? -> 시작템플릿에서 지정된 백지상태의 EC2 가 하나더 만들어진다. (2) 서버가 복제된다면 포트포워딩, 라우팅 설정도 알아서 자동으로 되나? -> ..