안녕하세요. IT 엘도라도 에 오신 것을 환영합니다.
글을 쓰는 것은 귀찮지만 다시 찾아보는 것은 더 귀찮습니다.
완전한 나만의 것으로 만들기 위해 지식을 차곡차곡 저장해 보아요.   포스팅 둘러보기 ▼

분류 전체보기 (168)

[AWS] ECS 배포 환경 구축 과정의 Troubleshootings

현재 근무 중인 회사의 서비스에는 AWS EB(Elastic Beanstalk)를 이용한 배포 환경이 구축되어 있다. 그러나 최근에 이러한 배포 환경을 Docker 기반의 AWS ECS(Elastic Container Service)를 이용한 배포 환경으로 바꿔야 한다는 필요성을 느끼고 해당 작업을 필자가 맡게 되었다. 그 과정에서 Docker와 ECS를 학습하고 이를 바탕으로 수많은 삽질 끝에 기본적인 ECS 배포 방법을 익힐 수 있게 되었다. 이에 대한 내용은 직전 포스팅에 자세히 작성되어 있다. 그러나 이는 말 그대로 '기본적인' 배포 방법이었을 뿐, 실제 회사의 서비스에 적용하기에는 무리가 있었다. 이로 인해 직전 포스팅의 내용을 기반으로 서비스를 ECS에 배포하려 할 때 현실적으로 고려해야만 했..

[AWS] Docker 기반의 ECS로 Django, Gunicorn, Nginx 배포하기

근무 중인 회사에서 서버 배포 방식을 변경하는 중대한 업무를 맡게 되면서, Docker를 공부하고 또 이를 활용한 배포 서비스인 ECS에 대해서도 공부하게 되었다. 물론 Docker 기반의 ECS 서비스에 실제로 현재 회사의 서비스를 배포하는 작업은 수차례의 삽질을 필요로 했지만, 그 과정에서 얻은 것도 많고 뿌듯함도 크기에 이번 포스팅에 해당 내용을 최대한 상세히 기록해두고자 한다. 아무래도 ECS에 대한 글이 아직까지는 그리 많은 편이 아닌 듯하니, 이번 포스팅이 다른 사람들에게 많은 도움이 될 수 있기를 바란다. 1. Docker 설치 Docker를 설치하는 방법에 대해서는 이번 포스팅에서 다루지 않는다. 운영체제별로 다르기도 하고, 공식 문서에 아주 잘 나와 있으며, 공식 문서가 아니더라도 이미 ..

[Web] 인가 (Authorization) : JWT (JSON Web Token), 리프레시 토큰

1. 인증 (Authentication) vs 인가 (Authorization) 본 포스팅에서 인증에 관한 내용을 다루기 전에, 먼저 인증과 인가의 차이를 알아보자. 먼저, 인증(Authentication)이란 서비스로부터 일정 권한을 부여받은 사용자임을 인증받는 절차를 말한다. 조금 더 간단하게 말하면, 가입된 계정으로 로그인을 하는 절차를 말한다. 다음으로, 인가(Authorization)란 이미 인증받은, 즉 로그인을 한 사용자가 서비스의 특정 기능을 사용하기 위한 권한을 허가받는 절차를 말한다. 즉, 특정 기능을 사용하려 할 때 사용자가 이미 로그인을 한 상태인지, 그렇다면 그 기능을 사용할 권한이 있는지 검증하는 절차를 말한다. 그중 본 포스팅에서 다룰 내용은 바로 인가(Authorization..

[Web] 인증 (Authentication) : 비밀번호 암호화, 세션/토큰 기반 인증

1. 인증 (Authentication) vs 인가 (Authorization) 본 포스팅에서 인증에 관한 내용을 다루기 전에, 먼저 인증과 인가의 차이를 알아보자. 먼저, 인증(Authentication)이란 서비스로부터 일정 권한을 부여받은 사용자임을 인증받는 절차를 말한다. 조금 더 간단하게 말하면, 가입된 계정으로 로그인을 하는 절차를 말한다. 다음으로, 인가(Authorization)란 이미 인증받은, 즉 로그인을 한 사용자가 서비스의 특정 기능을 사용하기 위한 권한을 허가받는 절차를 말한다. 즉, 특정 기능을 사용하려 할 때 사용자가 이미 로그인을 한 상태인지, 그렇다면 그 기능을 사용할 권한이 있는지 검증하는 절차를 말한다. 그중 본 포스팅에서 다룰 내용은 바로 인증(Authenticatio..

[Web] CORS (Cross Origin Resource Sharing) 이해하기

이번 포스팅에서 다룰 내용은 바로 CORS(Cross Origin Resource Sharing)이다. 웹 개발자라면 한 번쯤은 CORS와 관련하여 콘솔에 뜨는 빨간 글씨의 에러 때문에 짜증 났던 적이 있을 것이다. 하지만 CORS 정책이 괜히 존재하는 것은 아니다. 브라우저의 보안과 관련하여 아주 중요한 역할을 수행하기 때문이다. 그럼 한 번 CORS가 무엇인지에 대해 차근차근 알아보도록 하자. 1. Origin의 의미 먼저, CORS에서의 Origin이 무엇을 의미하는 건지 짚고 넘어가자. 한국말로는 '출처'라고 부르는 것인데, 이는 URL, 도메인 등과 비슷해 보이지만 엄연히 의미가 다르기 때문에 확실히 알고 넘어가야 한다. Origin은 URL에서 프로토콜, 도메인, 포트 번호를 합친 부분을 의미..

[JavaScript] 실행 맥락 (Execution Context) 이해하기 (feat. 클로저와 호이스팅의 원리)

이번 포스팅에서는 JavaScript의 실행 맥락(Execution Context)에 대해서 알아볼 것이다. 이는 JavaScript로 작성된 코드가 어떠한 원리로 실행되는 것인지 이해함에 있어 매우 중요한 개념이다. 그리고 본 포스팅의 제목에서도 밝혔듯이, 실행 맥락의 개념을 제대로 이해한다면 클로저와 호이스팅의 원리도 덤으로 이해할 수 있게 된다. 물론 클로저와 호이스팅의 기본 개념은 알고 있다는 전제 하에 말이다. 그럼 한 번 시작해보자. 1. 실행 맥락 (Execution Context, EC) JavaScript에서 실행 맥락(Execution Context, EC)이란 특정 코드를 실행하기 위해 필요한 환경, 혹은 그 환경을 나타내는 객체를 뜻한다. 여기서 실행의 대상이 되는 코드는 크게 두 ..

[JavaScript] 날짜 및 시각 관련 API (Date 객체)

지금까지 Python과 JavaScript를 이용한 풀 스택 개발 업무를 진행하면서, Python에서 날짜나 시각을 다루는 일은 꽤 자주 있었지만 의외로 JavaScript에서 날짜나 시각을 다루는 일은 많이 없었던 것 같다. 그래서인지 JavaScript에서 날짜나 시각을 다루는 일에는 상대적으로 미숙했다. 그래서 이번 포스팅을 통해 JavaScript가 제공하는 날짜 및 시각 관련 API를 깔끔하게 정리하고 익혀두기로 하였다. 1. Date : JavaScript의 날짜 및 시각 관련 API Date는 JavaScript에서 날짜 및 시각을 나타내는 객체를 생성하기 위한 생성자 함수의 이름이자, 그러한 객체의 타입을 일컫는다. JavaScript에서는 이를 통해 날짜 및 시각 관련 API를 제공하고 ..

[Python] GIL (Global Interpreter Lock) 이해하기

이번 포스팅은 Python만의 특징 중 하나인 GIL(Global Interpreter Lock)의 개념에 대해 알아볼 것이다. Python 프로그래머라면 한 번쯤은 들어봤을 법한 용어지만, 정확하게 알고 있지 못한 분들도 많을 것이다. 이 기회에 제대로 한 번 정리해보자. 1. Python 인터프리터란? GIL을 이해하려면 먼저 Python 인터프리터란 것이 정확히 무엇인지 알아야 한다. Python 인터프리터란, Python으로 작성된 코드를 한 줄씩 읽으면서 실행하는 프로그램을 말한다. 그 프로그램의 구현체로는 여러 가지가 있을 수 있는데, 현재 Python 인터프리터의 표준 구현체로 받아들여지고 있는 것은 바로 CPython이다. CPython은 C 언어를 이용하여 구현한 Python 인터프리터이..

파이썬 (Python) 2021.07.03

[Python] 비동기 프로그래밍 동작 원리 (asyncio)

JavaScript와 달리 Python은 비동기 프로그래밍에 어색하다. 애초에 JavaScript는 비동기 방식으로 동작하도록 설계된 언어인 반면, Python은 동기 방식으로 동작하도록 설계된 언어이기 때문이다. 그래서 Python이 제공하는 대부분의 내장 API들은 동기 방식으로 동작한다. 하지만 Python 3.4 버전부터 asyncio 라이브러리가 표준으로 채택되고 Python 3.5 버전부터 async/await 키워드가 추가되면서, Python에서도 비동기 프로그래밍을 더욱더 쉽게 할 수 있게 되었다. 그렇다면 Python에서 asyncio 내장 라이브러리는 비동기 프로그래밍을 어떻게 실현한 것인지, 그 동작 원리를 한 번 알아보도록 하자. 단, asyncio 라이브러리의 기본적인 사용 방법은..

파이썬 (Python) 2021.07.02

[Web] SSH 접속 원리 (feat. 대칭키, 비대칭키 암호화)

원격 서버를 이용하여 서비스를 운영하고 있는 사람이라면, SSH 프로토콜을 이용하여 해당 서버에 접속해본 경험이 있을 것이다. 하지만 (필자도 그랬지만) 상당수의 개발자분들은 접속 방법은 알아도 그 원리까지 정확히 알고 있지 못할 것이다. 따라서 이번 포스팅을 통해 SSH 접속의 원리를 한 번 들여다보기로 한다. 단, SSH 접속 원리를 이해하기에 앞서 대칭키 및 비대칭키 방식의 암호화를 반드시 이해하고 있어야 한다. 그렇지 않다면 본 포스팅의 내용을 전혀 이해할 수 없으므로 여기를 참조하여 해당 내용을 먼저 공부하고 오기 바란다. 1. 개요 SSH 프로토콜을 이용한 통신은 기본적으로 서버 클라이언트 모델에 기반한다. 따라서 SSH 접속을 위해서는 기본적으로 서버에 SSH 서버(= SSH 데몬)가 설치되..