본문 바로가기

프로그래밍40

JWT - 1 오늘 면접에서 JWT관련해서 질문을 받았는데 어디에 사용되는지 라던가 하는 부분은 알아도 정확하게 어떻게 구성되고 어떤식으로 작동하는지에 대한 답변이 부족했다고 생각이 들어서 JWT에 대해서 정리해보려고 한다. 일단 첫번째 포스팅에서는 JWT 자체에 대해서 알아보고 다음 포스팅에서 직접 사용하는 방법을 정리하면 좋을 것 같다. JWT? JSON Web Token의 두문자어로서 JSON 포맷을 통해서 데이터를 저장하는 웹 토큰이다. JWT는 사용자 인증의 과정에서 보편적으로 사용되는 토큰이다. 토큰 자체에 정보가 저장되는 Self-Contained 라는 특성을 가진다. JWT의 구성 JWT는 Header, Payload, Signature의 총 3가지 부분으로 구성된다. 최종적으로 생성된 토큰에서는 '.'.. 2022. 3. 2.
CORS - 1 면접중에 받았던 질문중에 CORS에 대한 질문이 있었는데, 긴장을 해서였는지 그냥 준비가 부족해서 였는지 답변을 못했었다. 대부분의 웹 프로젝트가 프론트와 백의 서버가 분리되어 서비스 되는 만큼 진짜 기본 중에 기본이라고 할 수 있는 개념인데... 사실 그 면접 마무리되고 나서부터 계속 한번 정리해야지 해야지 생각만하고 있었는데 이번 기회에 정리하면서 확실하게 가지고 가야겠다. CORS란? CORS는 Cross-Origin Resource Sharing의 약자로서 간단하게 번역해보면 "교차 출처 자원 공유" 정도로 번역된다. CORS는 웹에서 다루는 데이터의 크기가 커지고, 더 다양해짐에 따라서 기존의 웹 규칙인 SOP와는 대치되는 구조이다. 도메인을 단위로 하여 최초 자원이 로드된 도메인이 아닌 외부의.. 2022. 2. 18.
Django - Admin(Search, Filtering) 최근 내가 Django에 대해서 어느정도 알고 있는지도 확인하고 부족한 부분, 모르는 부분을 좀 보완하고자 인프런에서 강의를 듣고 있다. 아직 초반부임에도 불구하고 몰랐던 내용들이 줄줄이 나와서 좀 당황스러웠음;;; 지금까지 내가 알고 쓰던 기능들은 API 개발을 하기위한 최소 단위였다고 볼 수 있을 것 같다. 지금까지 내가 Django를 사용하면서 크게 신경쓰지 않았던 부분이 바로 Admin 페이지일 것이다. 전에 회사에 다닐때도 관리페이지를 따로 만들어서 사용했었기 때문에 Admin 페이지에 대해서 알아볼 생각을 못한 것도 있긴한데, 어쨋든 Admin 페이지에 대해서 별 생각을 안했던 것은 사실이다. DB에 저장된 데이터를 빠르게 수정할 필요가 있을 때나, Shell 통해서 데이터 관리하는 게 조금 .. 2022. 2. 4.
DRF - Serializer DRF를 사용해서 사용자를 관리하는 백엔드 앱을 만드는 간단한 프로젝트를 진행중이다. 지금까지는 DRF가 아닌 Native한 Django만을 사용해서 백엔드 앱을 만들어왔었는데, DRF를 얕게나마 경험을 해보니 장단점이 느껴지는 것 같다. DRF도 그렇고, Django도 그렇고 지금 내 이해도가 높은 수준은 아니지만 일단 어느정도 예제를 수행해보고 내 나름의 설계에 따른 앱을 만드는 과정에 있어서 가장 큰 차이점은 Serializer와 viewset, router 정도가 있을 것 같다. 아직 직접적으로 사용해보진 않았지만, Django에서는 관련 데코레이터를 직접 구현해서 사용해야했던 권한 관리나, 페이지네이션 기능도 DRF에 포함되어 있어서 가져다 사용할 수 있는 것 같다. 일단 가장 빨리 접했던 차이.. 2021. 12. 22.
Python - 예외처리 어제 퇴근 후에 간단한 기술 면접이 있었는데 질문중에 예외처리 문법에서 else의 역할이 무엇인지에 대한 질문이 있었다. 항상 except까지만 사용하다보니 정확하게 답변을 못했는데 파이썬의 예외처리 문법 관련해서 다시 한번 살펴볼 계기로 아주 적절한 계기같다. 근데 단순하게 예외처리에서 사용되는 키워드의 역할 정도만 정확하게 파악해보려고 공식 문서 살펴봤는데 당연하겠지만 예외처리를 구성하는 문법이 꽤나 다양해서 전체적으로 정리해보려고 한다. 파이썬의 예외처리 파이썬의 예외처리 문법에서 직접적으로 사용되는 키워드는 try, except, else, finally의 4종류가 사용된다. 각 키워드의 역할을 간단하게 정리하면 다음과 같다. try : 예외 발생을 잡아낼 코드의 부분을 지정하는 키워드이다. tr.. 2021. 11. 18.
자주 쓰는 psql 명령어 정리 psql 은 텍스트 기반의 PostgreSQL 관리 툴이다. PgAdmin을 쓸 수도 있지만 나는 터미널 환경에서 뭘 하는걸 좋아하다보니 psql을 사용하는 편이다. 보통 psql을 사용할 때에는 DB 인스턴스를 생성하거나 생성한 인스턴스에 저장된 데이터들을 확인하기 위한 목적으로 사용하고 있다. 실무에서는 AWS의 RDS서비스에 PostgreSQL을 올려서 사용하다보니 psql에서 DB 인스턴스를 만드는 과정은 그냥 넘기면 됐지만 로컬에서 실습 목적으로 프로젝트를 진행하다보니 인스턴스 생성 과정이 꼭 필요했다. 그리고 굳이 초기 세팅 단계가 아니더라도 인스턴스 선택이나 인스턴스의 정보 확인을 위해서 psql을 사용할 때마다 이전에 사용했던 명령어를 기억을 못해서 항상 찾아보고 난 후에 사용했었다. 그래.. 2021. 10. 8.
Django - Redis 캐싱 위코드 기간중에 진행했던 프로젝트 중에서 데이터 로딩 속도 확보를 위해서 Redis를 통한 캐싱을 적용했던 적이 있다. 상품 데이터 로딩 속도가 너무 느려서 로딩 속도를 빠르게 해 볼 생각만 가지고 캐싱을 적용해봤던 거라서 어떤 상황에서 캐싱을 적용하면 좋을지 정확하게는 모르겠다. 일단은 전에 적용했던 방식을 간단하게 정리해서 혹시라도 나중에 사용할 일이 있으면 참고하려고 한다. 캐싱이란 내가 전부터 알던 캐싱이라는 단어는 CPU의 캐시 메모리를 기반으로 한다. 사용이 잦은 데이터의 경우 매번 기억장치 간 이동으로 인한 시간 손실을 피하기 위해서 CPU 내부의 크기는 작지만 접근 속도가 압도적으로 빠른 캐시 메모리에 저장해 놓고 사용하는 방식 WAS에서의 캐싱 또한 비슷한 개념으로 이해했다. 특히나 데이.. 2021. 9. 27.
Django - 로깅 회사 나오기 직전에 장고 서버에 적용한 로깅에 대해서 정리해보려고 한다. 그 전에는 급한대로 Django의 Debug 모드를 사용해서 예상치 못한 Exception, Code Error 등을 확인했었다. Debug 모드를 사용하면 Gunicorn 작동 로그에 해당 에러와 Traceback가 출력이 되어서 운영 도중 문제가 발생했을 경우에는 Gunicorn 로그를 시간대별로 확인하면서 대응을 해야만했다. 전에 우분투나 임베디드 리눅스 등을 다뤄본 경험으로 인해서 내가 Django 서버를 관리할 때에는 기본적인 리눅스 명령어들을 활용해서 별 문제없이 이슈에 대응할 수 있었는데, 새로 오신분의 경우에는 프로젝트 구조에 대해서 나만큼 잘 알고있지 못하고 리눅스 사용도 어려워하셔서 겸사겸사 Django의 로깅 기.. 2021. 9. 11.
Google의 Cloud Functions에 입문해보자 구글의 클라우드 플랫폼(Google Cloud Platform)에서 지원하는 서버리스 서비스인 Cloud Functions에 대해서 간단하게 정리해보려 한다. 내가 AWS의 Lambda를 써보질 않아서 얼마나 비슷한 지 모르겠지만 여하튼 같은 서버리스 서비스니까 어느정도는 비슷할 것 같다. 별 거 없었다. 현재 사용중인 STT 서비스가 구글의 STT 였기 때문에 이미 구글 API에 대한 계정이 준비되어 있었고, 굳이 다른 플랫폼을 사용하는 것 보다는 동일한 플랫폼 내부의 서비스를 사용하는게 나중에 기능을 통합할 때 더 편할 거란 생각이 있었다. https://www.youtube.com/watch?v=d90B0tupHrE 처음 시작하는데 정말 큰 도움이 된 유튜브 영상이다. 현재 테스트 용도로 사용중인 .. 2021. 4. 1.