여행하는 개발자
데이터베이스

[데이터베이스] 트랜잭션(Transaction) 이해하기

트랜잭션이란데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위데이터의 무결성, 일관성을 유지하기 위해 중요한 역할을 한다.트랜잭션의 작업 단위트랜잭션은 여러 작업을 하나의 단위로 묶어 처리한다. 이는 데이터베이스 시스템의 무결성을 유지하기 위해 중요합니다. 예) 은행 계좌 간의 A계좌에서 금액을 차감하고 B계좌에 금액을 추가하는 두 개의 작업이 하나의 트랜잭션으로 처리된다.트랜잭션 관리DBMS에서 제공하는 기능으로, 다름과 같은 명령을 사용합니다.BEGIN TRANSACTION 또는 START TRANSACTION: 트랜잭션의 시작을 알림COMMIT: 트랜잭션 모든 작업이 성공적으로 완료되었음을 알리고, 변경 사항을 영구적으로 반영ROLLBACK: 트랜잭션 중 오류가 발생했을 때, 모든 변경사항을..

Git

[GIt] git@github.com: Permission denied (publickey) - SSH를 사용한 Repository 연결

문제 발생git push origin main 명령어를 실행했을 때 git@github.com: Permission denied (publickey). fatal: Could not read from remote repository.라는 오류가 발생했다면, 이는 SSH 인증 문제로 인해 GitHub 원격 저장소에 접근할 수 없다는 뜻입니다.가능한 원인과 해결 방법SSH 키가 설정되지 않았거나 SSH 에이전트에 추가되지 않음해결 방법 :SSH 키가 있는지 확인 ls -al ~/.sshid_rsa나 id_ed25519 같은 파일(및 .pub 파일)이 있는지 확인합니다.키가 없다면 새로 생성ssh-keygen -t ed25519 -C "your_email@example.com"기본 위치를 수락하려면 Enter..

Git

[Git] 깃 기초 - init, add, commit

Git이 왜 필요한가?내 소스 코드를 저장(버전 관리)소스코드 공유협업하는 공간Git 사용법git 명령어 -option으로 이루어졌다.ex) git add, git commit, git push 등git init을 하면 .git이라는 폴더와 함께 깃이 관리하는 폴더가 되는 것을 알 수 있다.여기서 . 은 숨겨진 폴더라는 의미이다. 생성된 .git 폴더를 삭제하고 싶다면 rm -rf .git 명령어를 사용하면 된다.Git Workflow총 세가지의 작업 환경으로 나누어져 있다.working directory: 프로젝트의 파일들을 수정하는 곳staging area: 버전 히스토리에 저장할 준비된 파일들이 있는 곳repository: 버전의 히스토리를 가지고 있는 저장소working directoryworki..

HTTP

[HTTP] HTTP 기본 - 시작하기

HTTP(HyperText Transfer Protocol)HTML, TEXTIMAGE, 음성, 영상, 파일JSON, XML(API)거의 모든 형태의 데이터 전송 가능서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용HTTP 특징클라이언트 서버 구조무상태 프로토콜(스테이스리스), 비연결성HTTP 메세지단순함, 확장 가능클라이언트 서버 구조Request Response 구조클라이언트는 서버에 요청을 보내고, 응답을 대기서버가 요청에 대한 결과를 만들어서 응답서버와 클라이언트가 분리되어 있기 때문에 양쪽이 따로 문제를 해결할 수 있다.무상태 프로토콜(스테이스리스/Stateless)서버가 클라이언트의 상태를 보존X장점: 서버 확장성 높음(스케일 아웃)단점: 클라이언트가 추가 데이터 전송Stateful, S..

DevOps

[AWS] 클라우드 컴퓨팅이란?

클라우드 컴퓨팅은 IT 리소스를 인터넷을 통해 온디맨드(수요에 따라)로 제공 사용한 만큼만 비용을 지불하는 것서버-클라이언트 아키텍처클라우드 컴퓨팅의 장점속도 및 민첩성 개선몇 번의 클릭으로 바로 리소스를 확보 가능개발비용 절감데이터 센터 운영 및 유지 관리에 비용 투자 불필요인프라 관리가 아닌 비즈니스에 자원 집중 가능빠른 확장성몇 번의 클릭으로 전 세계에 서비스 가능클라우드의 컴퓨터 유형SaaS (Software as a Service, 소프트웨어형 서비스)제공: 최종 사용자가 바로 쓰는 완성된 소프트웨어사용자 관리: 없음 (단순히 서비스 이용만 하면 됨)예시: Gmail, Slack, Dropbox, Zoom👉 "완성된 프로그램을 인터넷에서 구독해 쓰는 것"PaaS (Platform as a Se..

DevOps

[AWS] 커스텀 VPC 처음부터 끝까지 : IGW·NAT·피어링까지 따라하기

VPC 관련 알아둘 점커스텀 VPC 생성 시 만들어지는 리소스 : 라우팅 테이블, 기본 NACL, 기본 보안그룹서브넷 생성 시 모두 기본 라우팅 테이블로 자동 연동서브넷 생성시 AWS는 총 5개의 IP를 미리 점유함VPC에는 단 하나의 Internet Gateway만 생성 가능Internet Gateway 생성 후 직접 VPC에 연동 필요Internet Gateway는 자체적으로 고가용성/장애내구성을 확보보안 그룹은 VPC 단위서브넷은 가용영역 단위(1 서브넷 = 1 가용영역)가장 작은 서브넷 단위는 /28(11개, 16-5)VPC 생성(서울 리전)탄력적 IP탄력적 IP 할당(일단 VPC 사용 전에 탄력적 IP가 있어야 한다.)VPC 생성VPC > VPC > VPC 생성VPC가 두 개인데 아무 이름 없는..

DevOps

[AWS] Stateless 함정 헷갈리지 말자 : NACL vs 보안그룹 완전정복

보안그룹에서 ALB를 통해서만 인스턴스에 접근할 수 있게 하기인스턴스에 단독으로 직접 접근 차단보안그룹 생성(로드밸런서용)또 다른 보안 그룹 생성(인스턴스관리용)인바운드 규칙을 앞에서 만든 demo-ALB-SG로 온 트래픽만 받도록 설정 인스턴스의 보안그룹 변경하기방금 만든 demo-EC2-SG를 추가 새로운 보안 그룹이 추가된 모습다른 인스턴스도 보안 그룹을 모두 추가해준다. 로드밸런서도 보안그룹 추가 NACL(Network ACL)서브넷 단위로 적용되는 방화벽 규칙 세트보안그룹과 달리, Stateless 방식인바운드 규칙에 허용을 줬다고 해서 자동으로 아웃바운드가 허용되는 게 아님 -> 반드시 양쪽 방향에 규칙을 따로 설정해야 함특징적용 범위VPC 안에서 서브넷 단위로 적용됨(보안그룹은 EC2 인스턴..

DevOps

[AWS] VPC 구성요소 한 번에 이해하기

AWS 서브넷의 IP 개수AWS는 각 서브넷의 첫 4개와 마지막 1개 IP를 예약한다(5개가 예약되어 있음)첫 번째: 네트워크 주소두 번째: VPC 라우터세 번째: DNS네 번째: AWS에서 내부 용도로 예약마지막: 브로드캐스트 주소정리서브넷 크기는 CIDR로 결정되고, 항상 5개는 AWS가 예약하므로 실제 사용 가능 IP는 전체 수에서 5를 뺀 값입니다.VPC(Virtual Private Cloud)AWS에서 제공하는 가상 네트워크(클라우드 안의 독립된 네트워크 공간)기본적으로 AWS 리소스(EC2, RDS, ELB 등)는 반드시 VPC 안에서 동작사용자가 원하는 IP(CIDR 블록)를 지정할 수 있음보안, 라우팅, 네트워크 제어가 가능-> VPC는 회사 데이터센터 안의 큰 네트워크 망 같은 개념VPC..

데이터베이스

[DATABASE] - NULL의 의미와 Three-Valued Login

Three-Valued Login논리 시스템에서 세 가지 논리값 - TRUE, FALSE, UNKNOWN을 허용하는 개념입니다.데이터베이스(SQL)와 프로그래밍에서 NULL 값을 다룰 때 사용됩니다.Three-Valued Logic 개념일반적으로 논리 연산은 이진 논리(Binary Logic, TRUE/FALSE) 를 기반으로 하지만 Three-Valued Logic (3VL)에서는 다음과 같은 세 가지 값을 가집니다.TUREFALSEUNKNOWN (알 수 없음)Three-Valued Logic이 필요한 이유SQL에서는 NULL 값이 존재하기 때문에, 단순한 참/거짓 논리로 처리할 수 없는 경우가 발생합니다.NULL = NULL ? TRUE가 아니라 UNKNOWN이 됩니다.SQL에서 Three-Value..

개발지식

[개발지식] 다이나믹 프로그래밍(Dynamic Programming) - 경험을 기록하는

다이나믹 프로그래밍(동적 계획법)큰 문제를 작은 문제로 나누어 해결하고, 그 결과를 저장하여 동일한 작은 문제가 다시 등장했을 때 재계산하지 않고 저장된 값을 재사용하는 방식 아래의 조건을 충족해야 다이나믹 프로그래밍을 사용할 수 있다.🔥핵심 개념 : 부분 문제(Overlapping Subproblems) + 최적 부분 구조(Optimal Substructure)부분 문제 : 큰 문제를 작은 문제로 나누었을 때, 동일한 작은 문제가 여러 번 반복해서 나타나는 경우최적 부분 구조 : 문제의 최적 해결 방법이 그 하위 문제들의 최적 해결 방법을 조합하여 만들 수 있는 경우DP 해결 방식Top-Down (메모이제이션, Memoization)재귀(Recursion) + 캐싱(변수에 저장)큰 문제를 작은 문제로..

여행하는 개발자(SOO)
경험을 기록하는
상단으로