분류 전체보기

· Cloud
💡 NAT 게이트웨이의 역할은?NAT는 Network Address Transaction의 약자다.Private 서버가 가진 IP는 사설 IP다. (ex. 10.0.1.5) 채점 서버를 Private 서버에 두었는데 초기 세팅을 위해 Docker설치와 파이썬등을 설치하려면 공인 IP가 있어야한다.그래서 공인 IP를 가진 NAT로 패킷 헤더의 주소를 갈아 끼워줘야 외부와 통신이 가능해지는 것이다. 💡 AWS NAT Gateway를 안쓰고 EC2로 만든 이유처음에는 NAT Gateway를 생성해줬었는데 NAT Gateway는 시간당 요금으로 과금이 된다.한달 사용 비용이 약 43달러나 된다.물론 NAT Gateway를 사용하는 것이 관리적인 측면에서 더 편리하겠지만, 비용 절감을 위해서 EC2로 만들어줬..
· Cloud
지난 포스팅에서 RDS를 구축한 데 이어, 이번에는 캐시 레이어를 구성하려고 한다.기존 로컬 개발 환경에서는 Docker 컨테이너로 Redis를 띄워 사요했지만, AWS 인프라 환경으로 넘어오면서 관리형 서비스인 ElastiCache를 도입하기로 결정했다. 특히 이번 구성에서는 익숙한 Redis 대신 Valkey 엔진을 선택했다. 이 포스팅에서는 그 이유와 구체적인 설정 과정에 대해 정리해보려고 한다. 1. 왜 Docker에서 ElastiCache로 넘어가는가?1) 데이터 지속성 문제 기존에는 도커로 Redis를 띄워서 사용했었다.배포과정에서 컨테이너가 재생성 될때마다 캐시가 초기화 된다. Redis가 초기화되면 메모리에 있던 정보들이 날아간다.볼륨 마운트를 해도 되지만 설정이 까다롭다. 2) 리소스 경..
· Cloud
기존 로컬 개발 환경에서는 도커 컨테이너를 직접 띄워서 로컬 볼륨으로 데이터를 관리했었다.이제 RDS로 데이터를 관리해서 안정성을 확보하려고 한다. 1. RDS 생성하기RDS를 생성해보자.콘솔 검색창에 RDS 검색 > RDS 대시보드 진입 > 데이터베이스 생성 클릭 2. 엔진 옵션현재 사용하고 있던 postgreSQL의 버전은 17.5다.그래서 엔진 버전도 그대로 같은 버전으로 맞춰줬다. RDS 확장 지원 활성화는 체크하지 않았다.선택한 엔진 버전이 너무 오래된 버전인 경우, 구버전을 계속 쓰고 싶을 때 돈을 더 내고 기술 지원을 받는 옵션이다.내가 선택한 postgreSQL의 버전은 최신 버전이기 때문에 쓸데없이 유료 지원을 쓸 이유가 없다. 3. 가용성 및 내구성비용 때문에 단일 AZ DB 인스턴스 ..
· Cloud
기존 로컬 개발 환경에서는 Docker Compose를 활용해 PostgreSQL과 Redis 컨테이너를 실행하고 볼륨을 연결하여 사용했다.요즘 인프라를 AWS 클라우드 환경으로 이관하는 작업을 하고 있는데, PostgreSQL과 Redis를 Private Subnet에 배치하고자한다. 우선, 외부 접근을 차단하고 내부 애플리케이션만 접근할 수 있도록 DB 전용 방화벽 설정을 해준다. 1. 보안 그룹 생성 하기 VPC 대시보드 진입 > 왼쪽 메뉴에서 '보안 그룹' 선택 > '보안그룹 생성' 클릭 1) 기본 세부 정보보안그룹 이름은 프로젝트명을 넣어서 식별하기 좋은 이름으로 설정해줬다.VPC 정보는 처음엔 기본값으로 선택되어있었는데, 보안그룹을 생성하기 이전에 만든 VPC를 선택해줘야한다. 2) 인바..
· Cloud
요즘 코딩 테스트 플랫폼 개발 프로젝트를 진행하고 있다.비용 문제로 AWS를 사용하지 못하고 있었는데, 얼마 전 AWS에 기획서를 제출해서 1000달러 크레딧을 받게 되었다!그래서 이제부터 차근차근 AWS로 인프라를 구성해보려고 한다.대략적으로 이런 아키텍처를 그려보았다. 📌핵심 설계 전략은 총 3가지다.1. 보안 격리DB와 채점 서버는 외부에서 직접 접근할 수 없는 Private Subnet에 격리한다.2. 고가용성 확보가용영역을 2개로 이중화한다.3. 외부 통신Private Zone에 있는 서버들도 외부 라이브러리를 사용할 수 있도록 NAT Gateway를 구성한다. 🚀VPC 생성방법 ✅ 콘솔 검색창에 VPC 검색 -> VPC 생성 클릭 ✅ 이름 태그와 IP 대역 설정- 설정할 리소스'VPC..
1. 배열(Array)와 링크드리스트(Linked List)의 차이1) 배열의 특징 - 연속된 메모리를 할당받으며, 이로인해 크기가 고정되어있다. - 데이터에 접근할 때 인덱스를 사용하여 바로 접근할 수 있기 때문에, 시간복잡도가 O(1)이다. - 배열 중간에 새로운 요소를 삽입하거나 기존 요소를 삭제하려면, 모든 요소를 한 칸씩 이동해야하기 때문에 시간복잡도가 O(N)이다. 2) 링크드리스트의 특징 - 비연속적인 메로리를 할당받으며, 크기가 고정되어있지 않다. - 각 요소를 '노드'라고 다음 노드 주소를 가리키는 '포인트'를 가진다. - 데이터에 접근하려면 리스트의 맨 처음부터 시작하여 포인터를 따라 하나씩 이동해야하기 때문에 시간복잡도가 O(N)이다. - 새로운 요소를 삽입하거나 기존 요소를 삭제..
함수를 작게 만들어야한다는 것은 아는데, 실무에서 적용하려고 할때는 버튼 클릭하나에 많은 로직이 필요해서 어떻게 함수를 작게 쪼개야 하는 것인지 감이 안왔었다.이 책에 나오는 나쁜 함수 예시를 보고 불과 몇달 전에 내가 싸놓은 똥같은 코드들이 주마등처럼 스쳐지나갔다. 1. 추상화주석으로 함수를 주절주절 설명하는게 아니라 함수에 의미를 담고 표현해야 한다.함수를 읽기 쉽게 만들기 위해서는 함수를 작게 만들어야한다.함수는 한 가지를 해야한다. 여기서 '한 가지'의 기준은 추상화 수준이 하나인 단계만 수행하는 것이 한 가지다. 좋은 함수를 만들기 위해서는 하나의 추상화 수준을 일관되게 유지해야한다.추상화 수준이란 함수가 얼마나 구체적인 단계까지 신경 쓰느냐를 의미한다. 함수가 무엇(What)을 하는지에 집중..
· Cloud
NCP를 이용해서 CI/CD 구축을 하려고 한다!NCP에 가입하고 광고동의를 하면 10만 크레딧을 준다.그리고 Micro서버로 서버를 생성하면 1년동안 무료로 사용할 수 있다. 1. VPC 와 Subnet 생성하기1) VPC 생성하기서버를 생성하기 전에 서버가 위치할 독립된 가상 네트워크 공간을 만들어야한다.Services > Networking > VPC 로 이동한다. VPC 이름을 설정하고 IP 주소 범위를 입력한다.IP 주소 범위를 10.0.0.0/22로 입력했다. 10.0.0.0/22의 의미는 IP주소는 전체가 32비트인데 22비트는 네트워크 영역으로 사용한다는 것이다./뒤에 붙는 숫자가 작을 수록 호스트(서버)에 할당할 수 있는 IP수가 늘어난다.32비트의 22비트를 뺀 나머지 10비트만큼 IP..
백엔드 개발자 - 젤리곰
'분류 전체보기' 카테고리의 글 목록