시간의화살
Recent Posts
-
[AWS] S3 - Simple Storage Service
[AWS] S3 - Simple Storage Service
2025.01.22말 그대로 AWS에서 제공하는 저장소 EBS는 EC2 인스턴스에 붙어서 로컬 디스크처럼 사용되는 블록 스토리지이고, S3는 버킷 구조를 사용하는 객체의 클라우드 스토리지이다. EBS는 디스크 S3는 클라우드 저장소라고 생각하자. S3는 데이터를 거의 무제한으로 저장할 수 있다. 버킷 (Bucket)S3에서 데이터를 저장하는 컨테이너 역할을 수행한다.AWS 계정으로 여러 버킷을 생성할 수 있고, 이 때 생성하는 버킷의 이름은 고유값이다. 객체 (Object)S3에 저장되는 데이터의 단위.Key(Full Path)로 데이터를 식별하고 메타데이터로 파일 형식, 사용자 정의 태그를 명시한다.디렉토리 구조를 지원하지 않지만 Key를 사용해 가상 디렉토리 구조를 표현한다. S3의 접근 제어 방식은 크게 User-B.. -
[AWS] Route53
[AWS] Route53
2025.01.18Route53은 AWS에서 제공하는 클라우드 DNS로, 사용자가 도메인을 등록하고 트래픽을 다양한 AWS 서비스나 외부 서버로 라우팅하는 기능을 제공한다. (53은 port) TLD(Top Level Domain)는 도메인 이름의 가장 마지막 부분이다. gTLD - .com / .org / .net 등 전 세계 공용 TLD ccTLD - .kr / .us 등 특정 국가나 지역을 나타내는 TLDnTLD - .app / .tech 등 비교적 최근에 추가된 특수 목적 TLD SLD(Second Level Domain)은 TLD 바로 앞에 붙어 도메인의 고유한 이름을 정의하고, SubDomain은 SLD 앞에 붙어 도메인을 세분화한다. 브라우저가 도메인 이름으로 목적지 IP를 찾을 때는.. -
[AWS] RDS - Relational Database Service
[AWS] RDS - Relational Database Service
2025.01.17클라우드에 RDB를 배포할 때 그냥 EC2를 사용해서 RDB 실행시키면 되지만, AWS는 운영편의성 및 자동화를 위해 RDS서비스를 제공한다. EC2에 RDB를 직접 배포할 때는 DB 설치, 구성 작업을 직접 수행해야 하고, 백업 및 복구 작업을 수동으로 처리해야 한다. RDS는 초기 설정을 알아서 처리해주고 일정 기간마다 데이터를 백업해 Timestamp 기반 복구를 지원해주고, Multi Availability Zone 배포로 장애 발생 시 자동 복구 기능을 사용하는 등 여러 편의 기능을 제공한다. 읽기 작업을 분산해 트래픽 증가에 대응할 때는 Read Replica를 사용한다.각 복제본들은 원본 데이터베이스로부터 비동기적으로 데이터를 복제하는데.. 덕분에 성능 저하는 없지만 복제 지연이 .. -
[AWS] Availability and Scalability
[AWS] Availability and Scalability
2025.01.14AWS에서는 ELB(Elastic Load Balancer)를 사용해 트래픽을 여러 대상에 효율적으로 분신시켜 애플리케이션의 Availability와 Scalability를 높인다. 리버스 프록시처럼 클라이언트의 요청을 로드밸런서가 받아 여러 백엔드 리소스에게 넘겨주는 역할을 수행한다.이 때 트래픽 분산 알고리즘과 Health Check가 적용되고, 트래픽 증감에 따라 ELB는 자동으로 확장되거나 축소된다. 클라이언트에게 백엔드 리소스의 IP 정보를 숨길 수 있어 보안을 강화할 수 있고, 복잡한 설정을 AWS가 자동으로 관리해줘서 개발자는 비즈니스 로직 개발에 집중할 수 있다. 실제로 EC2에 엔진엑스같은 웹서버를 설정해 직접 로드밸런서를 구성할 수도 있지만, ELB가 제공하는 Auto Scailin.. -
[AWS] EC2 - Elastic Compute Cloud
[AWS] EC2 - Elastic Compute Cloud
2025.01.10EC2는 AWS에서 제공하는 깡통 컴퓨터라고 생각하면 된다. 보통 EBS, ELB, ASG 등 EC2를 더 쉽게 사용할 수 있도록 도와주는 여러 AWS 서비스들과 함께 사용한다. 용도에 따라 CPU, RAM, GPU, 스토리지, OS 등을 선택해 맞춤형 인스턴스를 구성할 수 있고대여한 EC2 인스턴스에 Security Group을 설정해 방화벽을 구성할 수 있다. Security Group은 클라우드 환경에서 수행되는 방화벽으로 AWS가 제공하는 소프트웨어 방화벽으로 생각하면 된다.물리적인 방화벽을 직접 제어하는게 아니고 가상화된 네트워크 수준에서 트래픽을 제어하는 방식으로 작동한다. 설정한 Security Group은 재사용 할 수 있고, 한 번 정의한 그룹을 다른 EC2 인스턴스에도 재사용 할 수 .. -
[AWS] IAM - Identity and Access Management
[AWS] IAM - Identity and Access Management
2025.01.06AWS IAM은 클라우드 리소스에 대한 보안 및 접근 제어를 관리하는 서비스이다. 스프링 시큐리티에서 권한과 그룹을 설정하는 것과 유사하다.AWS 계정 내에서 사용자, 그룹, 역할, 정책을 활용해 세분화된 권한을 설정한다. 먼저 계정을 만들고 AWS 웹 콘솔에 접근할텐데.. 여기서 만든 계정은 루트 계정으로, 모든 AWS 서비스에 접근할 수 있는 권한을 가진다. AWS 계정 하나로 여러 IAM 사용자를 만들 수 있고, 각 사용자는 IAM 서비스가 제공하는 권한에 따라 지정된 서비스에만 접근할 수 있다. (ex. 개발자는 EC2, 데이터 분석자는 S3 버킷에만 접근) https://[IAM 아이디].signin.aws.amazon.com/console IAM 사용자들은 각각 고유한 URL을 발급.. -
[SQL Server] 암호화 된 View 다루기
[SQL Server] 암호화 된 View 다루기
2025.01.03뷰는 쿼리 결과 집합을 논리적으로 나타낸 결과물으로 가상 테이블처럼 사용하는 경우가 많다. 자주 사용되는 복잡한 쿼리가 있을 때 뷰로 추상화해서 간단한 SELECT 구문으로 복잡한 쿼리를 쉽게 사용하거나, 특정 테이블에서 민감한 정보를 제외하고 뷰를 만들어 특정 컬럼만 노출시킬 때 사용하는데.. 예전에 경험한 프로젝트에서는 개발자가 이메일, 전화번호, 카드번호 등 고객의 민감한 정보가 담긴 테이블에 직접 접근하는 대신 민감한 정보가 암호화된 뷰를 통해 우회적으로 접근하는 경우도 있었다. exec sp_helptext 'VIEW_NAME'; SQL Server에서는 해당 프로시저를 사용해 뷰가 어떤 쿼리로 정의되어있는지 확인할 수 있는데.. CREATE VIEW VIEW_NAMEWITH ENCRYPTI.. -
[MySQL] WITH RECURSIVE 계층 쿼리
[MySQL] WITH RECURSIVE 계층 쿼리
2024.12.13Oracle에서는 트리 형태의 계층 구조를 가진 데이터를 쿼리로 뽑아낼 때 CONNECT BY / START WITH 구문으로 쉽게 작성할 수 있는데.. MySQL에서는 전용 구문을 제공하지 않아 백엔드 레벨에서 데이터를 가공하거나 여러 집계 쿼리를 사용해 우회해서 쿼리를 작성해야 됐다. MySQL 8.0 버전부터는 Common Table Expression을 지원하고, 이 구문을 활용해 CONNECT BY / START WITH 구문 없이 재귀적 계층 쿼리를 작성할 수 있다. WITH RECURSIVE 구문으로 임시테이블을 정의하고 해당 테이블을 스스로 다시 참조하는 방식이다. WITH RECURSIVE TEMP_TABLE AS ( -- 시작점 (앵커 쿼리) SELECT ... F..