전체 글 (16) 썸네일형 리스트형 📦 AWS IAM Udemy AWS Certified Developer Associate 강의를 들으며 중요한 부분을 정리한 글입니다. IAM 유저 & 그룹 기초 IAM 유저 & 그룹 IAM = Identity and Access Management, 글로벌 서비스 기본적으로 생성되는 root 계정은 사용하거나 공유하면 안됨 유저는 그룹화할 수 있음 그룹은 유저만 포함할 수 있으며, 다른 그룹을 포함할 수 없음 유저는 반드시 그룹에 속할 필요는 없으며, 한 명이 여러 그룹에 속할 수 있음 IAM: 권한 유저 or 그룹은 정책에 할당될 수 있음 정책은 유저의 권한을 정의 AWS의 최소 권한 원칙: 유저가 필요로하는 것보다 더 많은 권한을 주지 마라 IAM 정책 IAM 정책 구조 구성 Version: 정책 언어 버전, 항상 .. 🐍 Python json vs pickle vs marshal 📣 본문은 2021년 08월 01일 작성한 글입니다. 파이썬 객체를 JSON 형식으로 직렬화(인코딩) 또는 역직렬화(디코딩) 하는 모듈이다. pickle 파이썬 객체 구조를 직렬화 또는 역직렬화 하는 바이너리 프로토콜이다. pickling은 파이썬 객체 계층 구조가 바이트 스트림으로 변환되는 절차이며, unpickling은 그 반대 연산이다. pickle 모듈은 안전하지 않다. 신뢰할 수 있는 데이터만 unpickle 해야 한다. 신뢰할 수 없는 데이터를 처리하는 경우에는 json 모듈이 더 안전하다. 일반 텍스트를 파일로 저장할 때는 파일 입출력을 사용하지만 pickle 모듈을 이용하면 원하는 데이터를 자료형의 변경없이 파일로 저장하여 그대로 로드할 수 있으므로 주로 텍스트 이외의 자료형을 파일로 저장.. 🗄 B+Tree 인덱스 📣 본문은 2021년 08월 07일 작성한 글입니다. 개요 웹 프로그래머를 위한 데이터베이스를 지탱하는 기술 도서를 읽고 B+Tree 인덱스 부분을 정리해보았다. 데이터베이스의 인덱스가 어떠한 자료구조로 구현되어 있고 어떻게 검색을 하는지 알아보자. B+Tree 인덱스란? B+Tree 인덱스는 Tree 자료구조를 이용한 인덱스이다. 정상이 루트(root) 블록, 최하층이 리프(leaf) 블록이라고 불리며, 그 사이에 브랜치(branch) 블록이 들어간다. 루트 블록과 브랜치 블록은 검색 키에 대해 해당 블록이 어디에 있는지에 대한 정보를 가지고 있다. 인덱스 검색 시에는 루트 → 브랜치 → 리프 순으로 도달하여 원하는 데이터를 얻을 수 있다. 레코드 수가 적으면 루트가 브랜치를 겸하며, 루트와 리프밖에 .. 🌍 SSH Tunneling 📣 본문은 2021년 10월 17일 작성한 글입니다. 개요 VPN을 통해서만 접속이 가능한 데이터베이스 서버를 로컬에서 접근하기 위해 ssh tunneling을 이용한 port forwarding 방법을 찾아보게 되었다. SSH의 정의부터 Tunneling 방법, 추가로 Pycharm tunneling 설정 방법도 덧붙여 설명해본다. SSH(Secure Shell)란? 네트워크 상의 다른 컴퓨터에 접속하여 명령어를 실행할 수 있는 응용 프로그램 혹은 프로토콜을 의미한다. 기존의 rsh, rlogin, telnet 등을 대체하기 위해 설계되었으며, 강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공한다. 기본적으로는 22번 포트를 사용한다. 우리는 다음 명령어를 통해 .. 📦 AWS ELB와 ACM로 https 환경 구성하기 📣 본문은 2021년 12월 11일 작성한 글입니다. 개요 단일 서버로만 구성된 프로젝트에는 Let’s Encrypt 를 이용해 SSL 인증서를 발급 및 적용해왔는데, 이번 프로젝트에는 AWS 환경에서 ELB 를 연결해서 Certificate Manager 인증서로 https 환경을 구성해보기로 했다. 로드 밸런서 생성 AWS EC2 > 로드 밸런싱 > 로드밸런서에서 로드 밸런서 생성을 클릭한다. 로드밸런서 타입 선택 화면이 보이면 좌측의 Application Load Balancer를 선택한다. 로드밸런서 이름, VPC, 네트워크 매핑 등 기본 설정을 해준다. 리스너와 라우팅 설정 부분이 중요한데, 리스너를 추가하려면 설정된 경로(프로토콜, 포트)로 요청이 들어왔을 때 리스너가 포워딩해 줄 타겟 그룹을.. 🎡 Pod의 개념과 특징 📣 본문은 2021년 10월 31일 작성한 글입니다. 개요 꽤 오래 전, 인프런에 결제해 둔 쿠버네티스 강의(Reference 참고)가 있었다. 당시에는 실무에서 사용할 일이 없어서 이론 강의만 몇 개 듣고 묵혀두었는데 이직을 하고 맡게 된 프로젝트에는 쿠버네티스 기반 인프라 구성이 되어있어 저번 주말부터 다시 강의를 보기 시작했다. 오늘은 쿠버네티스의 주요 개념 중 하나인 Pod의 특징에 대해 정리해보려 한다. Pod Pod는 쿠버네티스 애플리케이션의 최소 단위이다. 여러 개의 컨테이너로 구성된 Pod도 있고, 단일 컨테이너로만 이루어진 Pod도 있다. Container를 Pod로 그룹화하는 이유는 리소스를 더 지능적으로 공유하기 위해서이다. 쿠버네티스 시스템에서는 같은 Pod에 속한 컨테이너끼리 동일.. 🔍 Django 서버 실행 테스트하기 (with selenium) 📣 본문은 2019년 8월 24일 작성한 글입니다. 목표 크롬 브라우저 창을 실행하기 위해 selenium의 webdriver를 가동한다. 브라우저를 통해 로컬 PC 상의 웹 페이지를 연다. 웹 페이지 타이틀에 Django 라는 단어가 있는지 확인한다. 첫 번째 테스트 from selenium import webdriver browser = webdriver.Chrome() browser.get('http://localhost:8000') assert 'Django' in browser.title 위 소스코드를 실행하면 selenium을 import 할 수 없다고 할 것이다. pip로 selenium을 설치해보자. pip install -U selenium selenium을 이용해 브라우저를 실행시킬 웹.. 🔫 클래스 기반 뷰의 모범적인 이용 📣 본문은 2020년 3월 21일 작성한 글입니다. Django에는 CBV, FBV 두 종류의 뷰가 존재한다. 특히 클래스 기반 뷰는 장고에서 기본적으로 제공하는 제네릭 뷰를 상속해서 사용하면 여러가지 기능을 매우 편리하게 사용할 수 있다. 나는 대부분 함수 기반 뷰로만 작성을 해왔는데 CBV를 잘 활용한 코드가 훨씬 깔끔하고 직관적이라 느껴져 최대한 장고에서 지원해주는 뷰를 잘 사용해보기로 했다. 이번 포스팅은 Two Scoops of Django 10장을 읽고 중요한 내용을 정리한 글이다. 더 자세한 내용은 책을 참고하시면 좋다. 개요 장고는 클래스 기반 뷰를 작성하는 표준화된 방법을 제공한다. 함수 기반 뷰에서는 뷰 함수 자체가 내장 함수이고, 클래스 기반 뷰에서는 뷰 클래스가 내장 함수를 반환하는.. 🐍 Python Walrus Operator 📣 본문은 2021년 9월 2일 작성한 글입니다. 개요 파이썬 3.8 버전부터 왈러스 연산자를 사용할 수 있다. 왈러스 연산자는 :=와 같이 사용하는데, 생김새가 마치 바다코끼리의 눈과 엄니를 닮았다하여 이름이 붙여졌다고 한다. (귀여워..) 필자는 파이썬 코딩의 기술 책을 읽고 왈러스 연산자에 대해 알게 되었는데, 진즉 알았더라면 많은 코드를 좀 더 클린하게 짤 수 있지 않았을까 생각된다. 왈러스(walrus) 연산자란? 왈러스 연산자는 대입식이라고도 부르는데 이는 대입문이 쓰일 수 없는 위치에서 변수에 값을 대입할 수 있다. 예를 들면 if문 안에 대입식을 쓸 수 있다. 예시 쉬운 예시로 a라는 리스트의 길이가 10 이상이면 길이와 함께 리스트가 너무 길다는 문장을 출력하도록 해보자. if len(a.. 🐱 github actions를 활용한 테스트 자동화 프로세스 도입기 📣 본문은 2022년 2월 6일 작성한 글입니다. 이번 포스팅에서는 팀에 테스트 자동화 프로세스를 추천 및 도입하고 github acitons를 활용해 환경을 구성해 본 과정을 공유하려 한다. 개요 현재 팀에 합류한 지는 4개월 정도 되었다. 나는 팀에서 뽑은 첫 백엔드 개발자였고, 기존에는 부문장님 한 분이서 백엔드 개발을 모두 담당하고 계셨다. 개발 팀원이 1명에서 2명이 되는 건 단순히 숫자가 늘어나는 것 뿐만 아니라 협업이 불필요했던 그동안의 개발 프로세스와 문화를 모두 통째로 들어내야하는 혁명이 필요한 일이라고 생각된다. 입사 초반에는 신규 입사자를 위한 README 작성부터 시작해 로컬 환경 셋팅 방법, git 브랜치 전략 수립 등 개발하기 좋은 환경 만들기!를 주도적으로 진행했다. 내가 고생.. 이전 1 2 다음