프로그래밍

    에러 핸들링 잘하기 (feat. 클린코드)

    클린 코드 - 에러 핸들링 오류 코드보다는 예외 사용하기 오류 코드를 사용하게 되면 상단에 오류인지 확인하는 불필요한 로직이 들어가게 됩니다. 오류의 범주에 들어가지 않은 상태를 나타내는 것이 아니라면, 예외(Exception)로 명시적으로 에러 처리를 표현해주는 게 좋습니다. as-is from enum import Enum class ErrorCodes(Enum): VALUE_ERROR="VALUE_ERROR" def we_can_raise_error(): ... return ERROR_CODES.VALUE_ERROR def use_ugly_function(): result = we_can_occur_error() if result == ErrorCodes.VALUE_ERROR: # 처리 코드 .....

    PubSub 사용할 때 주의할 것

    이번에 차량 블랙박스의 화각이상을 탐지하는 프로젝트에 참여하게 됐다. 실시간은 아니고 배치로 돌아가게 하면 됐으며 자연스럽게 비동기 메시지 큐를 고민하게 됐다. 결국 메시징 큐를 처음 써보는 입장에서 갓구글이 매니징해주는 PubSub을 사용하게 됐다. 공식 문서나 사용 방법은 꽤 직관적이었지만, 처음 사용해본 나의 입장에서 실수를 했던 부분들이 있어 트러블슈팅기한 몇가지를 정리해봤다. 1. Ack Deadline 일반적으로 구독(Subscription)에서 메시지를 가져오는 방식은 비동기 방식과 동기 방식이 있다. 나는 동기 방식으로 메시지를 배치로 가져왔고 이후 인퍼런스 모델이 인퍼런스를 끝낸 후, 빅쿼리 적재 + 모니터링 서버에 요청까지 마친 후 acknowledge(ack라고 줄여 이야기하겠습니다)..

    도커 컨테이너에서 멀티 프로세싱을 하면?

    데이터 엔지니어링을 하다 보면 실제로 컴퓨팅 리소스를 최대한으로 사용할 수 있도록 멀티스레딩 혹은 멀티프로세싱을 사용한다. 더불어 요새는 국 룰이 돼버린 컨테이너를 활용해서 프로세스를 격리하고 배포, 테스팅을 훨씬 쉽게 진행할 수 있게 되었다. 그러다 문득 궁금한 점이 하나 생겼다. 만약 멀티 프로세싱을 구현했을 때 컨테이너에서는 어떻게 동작할까. 사실 도커를 사용한 지는 오래 됐지만, 그냥 단순하게 하나의 격리된 프로세스라고만 생각했었다. 그래서 본 질문에 대해 대답이 제대로 떠오르지 않았다. 결과부터 이야기하면 컨테이너 내에서 Multi Process 동작은 한 컨테이너에서 호스트 머신의 CPU 자원을 최대한 활용하여 동작한다. 컨테이너의 네임스페이스 내부에서 멀티 프로세스들이 동작하며, 주어진 리소..

    Airflow 2 버전으로 Migration 한 후기

    데이터 엔지니어 포지션으로 회사에 들어간 지 3개월이 되었습니다. 취준을 하면서 데이터 파이프라인에 중요한 역할을 하는 Airflow를 처음 알게 되었고, execution_date와 start_date가 계속 헷갈렸었는데... 어느덧 회사에서 성공적으로 Airflow 1.10.14 버전에서 2.1.0 버전으로 migration을 완료하였습니다. 본 글에서는 Airflow 2로 migration의 레슨 런을 정리해봤습니다. 잘 정제된 글은 아닙니다만, 해당 주제로 조만간 회사 기술 블로그에서 더 상세하게 다루도록 하겠습니다. Airflow v2 Airflow란? Airflow는 Python으로 개발된 워크플로우 작성 + 스케줄링 관리 플랫폼입니다. 간단한 스케줄링 툴은 많지만, airflow의 매력은 태..

    쉽게 알아보는 서버 인증 3편(SNS 로그인, OAuth 2.0)

    안녕하세요 여러분. 오늘은 "쉽게 알아보는 인증"의 마지막 편인 SNS 로그인 과 OAuth에 대해 써보려고 합니다. 만일 SNS 로그인을 한 번이라도 구현해보려고 하셨다면, OAuth을 한 번은 들어보셨을 겁니다. 그래서 SNS 로그인 = OAuth라고 생각하시는 분이 계시는데 이는 잘못된 생각입니다. OAuth 프로토콜의 기능 중 하나로 SNS 로그인이 있는겁니다! 지금부터 OAuth 의 정의를 시작으로 어떤 방식으로 SNS 로그인이 작동되는지 차근차근 알아보도록 하겠습니다. 참고 포스팅 http://tansfil.tistory.com/58 (세션/쿠키, JWT를 이용한 인증) http://tansfil.tistory.com/59 (Access Token + Refresh Token을 이용한 인증) ..

    쉽게 알아보는 서버 인증 2편(Access Token + Refresh Token)

    안녕하세요! 이전 포스팅에는 크게 세션/쿠키 인증, 토큰 기반 인증(대표적으로 JWT)에 대하여 알아보았습니다. 저희가 앱, 웹 혹은 서버 개발을 하면서 꼭 사용하게 되는 인증(Authorization)은 아주 중요합니다. 만일 설계를 잘못했을 시, 회원들의 정보 유출이 일어날 수도 있으니까요. 이번 포스팅에서는 기본 JWT 방식의 강화버전인 Access Token & Refresh Token 방식에 대해 알아보겠습니다. Refresh Token? Access Token(JWT)를 통한 인증 방식의 문제는 만일 제 3자에게 탈취당할 경우 보안에 취약하다는 점입니다. 유효기간이 짧은 Token의 경우 그만큼 사용자는 로그인을 자주 해서 새롭게 Token을 발급받아야 하므로 불편합니다. 그러나 유효기간을 늘..

    쉽게 알아보는 서버 인증 1편(세션/쿠키 , JWT)

    앱 개발을 처음 배우게 됐을 때, 각종 화면을 디자인해보면서 프론트엔드 개발에 큰 흥미가 생겼습니다. 한때 프론트엔드 개발자를 꿈꾸기도 했었죠(현실은 ...) 그러나 서버와 통신을 처음 배웠을 때 마냥 쉬운 일은 아니구나라고 생각했습니다. 항상 당연하게 생각해왔던 기능(데이터를 보내고 받는 작업)들을 직접 구현하려고 하니 헷갈리는게 한둘이 아니더군요. 그 중에서 초창기에 가장 어려움을 겪었던 부분은 바로 ‘인증’ 부분이었습니다. 인증이 필요한 이유 인증은 프론트엔드 관점에서 봤을 때 사용자의 로그인, 회원가입과 같이 사용자의 도입부분을 가리키곤 합니다. 반면 서버사이드 관점에서 봤을 때는 모든 API 요청에 대해 사용자를 확인하는 작업입니다. 사용자 A와 사용자 B가 앱을 사용한다고 가정하겠습니다. 두 ..

    React Native를 소개합니다

    안녕하세요! 안드로이드,IOS 개발을 하다 React Native에 푹빠진 학생입니다. Facebook이 만든 자바스크립트 라이브러리 React.js 는 현재 한국에서도 크게 인기입니다. 반면 React Native는 아직까지 한국에서는 자료가 적고 인기도 적은 편입니다. 본 포스팅에서는 React Native에 대해 알아볼 것이며 장점과 단점에 대해서도 알아보도록 하겠습니다. React란? React.js는 프론트엔드 개발자라면 한 번쯤은 들어봤을 겁니다. Facebook에서 마음먹고 개발한 React.js는 요새 웹사이트 개발을 할 때 가장 많이 쓰이는 라이브러리 중 하나입니다. Facebook, Instagram, Uber, Evernote 등 짱짱한 기업들이 React를 도입했다고 하니 충분히 검..