binaryflavor

Build...

Python/FastAPI 멀티모듈 프로젝트 구성기 (Dependency Injection, Layered Architecture, ...)
python

Python/FastAPI 멀티모듈 프로젝트 구성기 (Dependency Injection, Layered Architecture, ...)

GitHub - byunjuneseok/fastapi-multi-module-project: 📦 Fastapi Multimodule project boilerplates. Build more flexible, testable and maintainable api service.📦 Fastapi Multimodule project boilerplates. Build more flexible, testable and maintainable api service. - GitHub - byunjuneseok/fastapi-multi-module-project: 📦 Fastapi Multimodule project boilerpla...GitHubbyunjuneseok빠른 요약커머스 프로젝트를 런칭하면서 정리된 코드는 위에 샘플로 작성해두었다. 지금까지의 파이썬 개발은...높은

라즈베리 파이로 쿠버네티스 클러스터에 MetalLB와 nginx-ingress를 설치해보자.
K8s

라즈베리 파이로 쿠버네티스 클러스터에 MetalLB와 nginx-ingress를 설치해보자.

MetalLB?MetalLB, bare metal load-balancer for Kubernetes라즈베리 파이 클러스터 (어떤 관점에선 베어메탈)에 Load Balancer를 사용하기 위한 가장 심플한 방법 중 하나라고 생각된다. 설치Helm 차트를 이용하여 클러스터에 MetalLB를 배포한다. Helm 레포를 추가하여 MetalLB를 설치할 준비. helm repo add metallb https://metallb.github.io/metallb helm repo update 그리고 Cluster가 속해있는

Terraform 으로 aws lambda & function url 만들기 (단일 람다 함수에 API GW 없이 URL 붙이기)
AWS

Terraform 으로 aws lambda & function url 만들기 (단일 람다 함수에 API GW 없이 URL 붙이기)

Announcing AWS Lambda Function URLs: Built-in HTTPS Endpoints for Single-Function Microservices | Amazon Web ServicesOrganizations are adopting microservices architectures to build resilient and scalable applications using AWS Lambda. These applications are composed of multiple serverless functions that implement the business logic. Each function is mapped to API endpoints, methods, and resources

AES-256-GCM 으로 암호화된 개인정보 Java로 복호화하기
Java

AES-256-GCM 으로 암호화된 개인정보 Java로 복호화하기

django 서버의 개인정보를 AES-256-GCM 알고리즘으로 암호화하기이번 작업은...성능이 매우 낮은 레거시를 쳐내는 작업이었다. 이번 작업의 요구사항은 아래와 같이 정의할 수 있었다. 성능이 기존보다 빨라야 할 것 aws KMS를 사용하고 있었는데 네트워크를 타야하다보니 암호화가 느렸다. 개인정보를 암호화하는 데 이것보다는 훨씬 성능이 빨라야 한다. 법률을 준수하는 보안 설계프로젝트 수행 시 정보 시스템을

django 서버의 개인정보를 AES-256-GCM 알고리즘으로 암호화하기
python

django 서버의 개인정보를 AES-256-GCM 알고리즘으로 암호화하기

이번 작업은...성능이 매우 낮은 레거시를 쳐내는 작업이었다. 이번 작업의 요구사항은 아래와 같이 정의할 수 있었다. 성능이 기존보다 빨라야 할 것 aws KMS를 사용하고 있었는데 네트워크를 타야하다보니 암호화가 느렸다. 개인정보를 암호화하는 데 이것보다는 훨씬 성능이 빨라야 한다. 법률을 준수하는 보안 설계프로젝트 수행 시 정보 시스템을 구축하게 되고 정보 시스템을 보호하기

FastAPI에 Rate-limit(Throttling) 구현
python

FastAPI에 Rate-limit(Throttling) 구현

너어어무 쉽다 이말이야!ImplementationRedis 클러스터 혹은 인스턴스 생성k8s 프로젝트 내에 redis 클러스터를 추가하였다. 운영 환경에 따라 다를 수도 있겠지만, 아래와 같은 manifest를 사용한다. 사실 꼭 redis를 사용할 필요는 없지만, 파이썬 라이브러리의 성숙함과 멀티 Pod으로 운영되었을 때를 고려한다면 쓰는 것이 좋다. apiVersion: v1 kind: Pod metadata: name: <APPLICATION>-redis

etcd 클러스터를 aws에 terraform으로 만들기
AWS

etcd 클러스터를 aws에 terraform으로 만들기

GitHub - byunjuneseok/aws-ec2-etcd-cluster-with-terraform: Provision EC2 etcd cluster with terraformProvision EC2 etcd cluster with terraform . Contribute to byunjuneseok/aws-ec2-etcd-cluster-with-terraform development by creating an account on GitHub.GitHubbyunjuneseokTerraform으로 작업한 etcd cluster 코드사실 별 엄청난 것을 한 건 아니고, etcd 내부 구경할 겸 EC2 etcd 클러스터를 만들어봤다. 간단하게 terraform.tfvars.example 을

라즈베리 파이로 쿠버네티스 클러스터를 만들어보자.
K8s

라즈베리 파이로 쿠버네티스 클러스터를 만들어보자.

1. 시작!뽐뿌의 발단!!!!!!!침대에 누워 유튜브의 알고리즘을 탐험하다가 하나의 영상을 보게 되었는데, 결국 카드 결제까지 가는 건 한순간이었다.  이 영상을 보고 갑자기 공대생의 피가 끓는 너낌이 들었달까? 바로 침대 위에서 맥북을 펴고 조사에 착수했다. 2. 구상하드웨어 출처 : https://kubernetes.io/ko/docs/concepts/overview/components/사실 대단한 구상은 없다.

M1 바이너리가 제공되지 않는 테라폼 프로바이더 빌드해서 쓰기 (hashicorp/template)
golang

M1 바이너리가 제공되지 않는 테라폼 프로바이더 빌드해서 쓰기 (hashicorp/template)

terraform init 실패한다.테라폼을 m1 맥북으로 사용할 때 가끔, arm64 다윈 커널용 바이너리가 없어서 terraform init 에 실패하는 경우가 있다. 내가 최근에 겪은 hashicorp/template 의 경우로 해결하는 짧은 경험을 공유하고자 한다. What is the "Provider"?Home - Plugin Development - Terraform by HashiCorpLearn about developing plugins that connect Terraform

Docker 이미지로 AWS Lambda 만들기 (Boilerplate 포함)
AWS

Docker 이미지로 AWS Lambda 만들기 (Boilerplate 포함)

2020년 말, AWS Lambda의 새로운 기능으로 컨테이너 이미지 지원이 발표되었다. 기존 lambda 의 프로비저닝에 비해 얻을 수 있는 이점을 요약하자면 다음과 같다. - 최대 10GB 크기의 컨테이너 이미지로 패키징 및 배포할 수 있는 기능 제공 - Dependencies 관리 및 설치의 용이성 - 다른 linux distro 의 이미지에서도 사용 가능함. (다만,

Github Actions 의 crontab 스케쥴링 기능으로 외주 프로젝트의 Certbot SSL 인증서 재발급 자동화하기
Automation

Github Actions 의 crontab 스케쥴링 기능으로 외주 프로젝트의 Certbot SSL 인증서 재발급 자동화하기

Github Actions 에서의 crontab 스케쥴링?Github Actions은 crontab scheduling 을 지원한다. 적당히 간단한 job 을 주기적으로 돌리고 싶을 때, aws 에서 cron event 로 lambda 를 트리거하는 방법을 선택할 수도 있겠다. 하지만 이는 lambda 를 위한 추가적인 구현 수정이 필요하고 aws를 잘 모르는 개발자라면 이유모를 비용 청구에 대한 두려움이 있을

AWS S3, Cloudfront, Route53과 github Actions으로 정적 웹페이지 배포, 호스팅 자동화하기
AWS

AWS S3, Cloudfront, Route53과 github Actions으로 정적 웹페이지 배포, 호스팅 자동화하기

들어가기 전에예전에 잠깐 창업에 발을 살짝 들였을 때, 팀 사이트를 오늘 소개한 방법으로 배포한 적이 있다. 새로운 블로그를 최근에 만들었는데, 이 페이지를 배포할 방법으로 netlify 같은 서비스도 고민했지만, 그냥 깔끔하게 내가 다 만들어버리고 블로그 포스팅도 하자는 생각으로 다시 시도하면서 정리하게 되었다. 이 포스트에서는 vue, react 의 Client side application 뿐만

애자일하게 졸프하기; 1학기
Story

애자일하게 졸프하기; 1학기

프로젝트 시작하기컴퓨터공학과 학생이라면 누구나 4학년에 프로젝트를 의무적으로 하게된다. 갖은 풍파(?)를 견뎌내고 29살에 4학년을 다니고 있는 나로서는 꽤나 큰 고민거리였다. 졸업 프로젝트를 남들처럼 대충대충 CRUD 어플리케이션만 만들기엔 내 시간이 너무 아까웠다. 그렇다고 어마어마한 시간을 쏟아부어 내가 만족할만한 퀄리티의 소프트웨어를 내기엔 부담이 컸다. 나는 스타트업에서 개발자로 일하고 있으며, 코로나라는 특수한 상황으로

AWS Elastic Beanstalk Amazon Linux2 환경에서의 로그 커스터마이징 (Amazon Cloudwatch & EB Web Console)
AWS

AWS Elastic Beanstalk Amazon Linux2 환경에서의 로그 커스터마이징 (Amazon Cloudwatch & EB Web Console)

지난 블로깅을 통해 Amazon Linux 1 환경의 Elastic Beanstalk 어플리케이션을 새로운 Amazon Linux2 환경으로 마이그레이션 하는 과정을 소개하였다. 이번 포스팅에서는 Elastic Beanstalk 웹 콘솔과 Amazon Cloudwatch 를 통해서 내가 원하는 로그를 볼 수 있는 기능을 소개하려고 한다. 우리의 API 서버인 sachiel 은 모니터링을 위해 API 호출과 exception 로그를 분리해서 저장하고

elastic beanstalk Amazon Linux2 python 환경 마이그레이션 후기
AWS

elastic beanstalk Amazon Linux2 python 환경 마이그레이션 후기

HBsmith 는 메인 백엔드 API 서버와 백오피스 어플리케이션을 aws 의 elastic beanstalk 서비스를 이용하여 배포하고 있다. 2011년에 출시된 서비스인 만큼 많은 레퍼런스와 자료들이 존재하고 있으며, 모든 조직/서비스가 항상 컨테이너라는 기술이 항상 답이 될 수 없기 때문에 아직도 많이 사용되고 있는 서비스이다. 우리는 “Amazon Linux 2018.03 v2.9.20

DRF (django restframework)에서 HMAC Authentication 구현하기
python

DRF (django restframework)에서 HMAC Authentication 구현하기

Introduction내가 관리하는 API 서버는 다양한 타입의 클라이언트들로 오는 요청을 처리하고 있다. 기본적인 oauth 인증을 이용하는 웹 어플리케이션 뿐만 아니라, Windows server application, aws lambda 등 많은 어플리케이션이 HMAC 인증을 사용하고 있다. DRF (django Rest Framework)의 Permission Class 로 구현되지 않고, view 로직에 signature 검증 로직이 있는 상태다. 즉, 아무

aws MFA OTP를 잃어버렸을 때 (Google Authenticator) - DevOps엔지니어가 한 스프린트 업무를 통째로 날릴뻔한 썰
AWS

aws MFA OTP를 잃어버렸을 때 (Google Authenticator) - DevOps엔지니어가 한 스프린트 업무를 통째로 날릴뻔한 썰

새 아이폰을 구매하고 기존 아이폰에서 마이그레이션했다. 나는 마이그레이션을 하면, Google Authenticator 앱 정보가 그대로 넘어올 거라 생각했다. 사실 아무 생각도 안하고 쓰던 아이폰을 초기화했다. 😅 매일 aws 웹콘솔을 접속하는 나에게 MFA OTP를 잃어버린 사고는 매우 치명적이었다. 이걸 당장 복구하지 않는다면, 업무에 큰 차질을 빚을 수 있었다. 급한 마음에 aws 로그인 화면에서

Infrastructure as Code 를 읽고나서 (1)
Infrastructure

Infrastructure as Code 를 읽고나서 (1)

대규모 인프라 운영에 사람의 수작업을 최소화하려면 결국 자동화만이 해답이다. 자동화는 곧 스크립트나 소프트웨어의 영역이라는 점에서 클라우드 인프라 운영자라면 어쩔 수 없이 개발 세계를 기웃거릴 수 밖에 없게 된다. 계발 세계의 초기 진입 장벽을 고려하려면 개발자가 인프라 운영을 배우는 게 더 나아보이기도 한다. 어쨌든 인프라 운영자는 자동화를 위한 최소한의 개발 능력과

파이썬의 모든 변수는 객체(Object) : C와의 차이점은?
python

파이썬의 모든 변수는 객체(Object) : C와의 차이점은?

2019년에 작성한 글입니다. (https://www.binaryflavor.com/3) 파이썬은 파이썬만의 배우기 쉬운 문법때문에 잘 다루기 쉽다는 오해를 받습니다. 공식 문서를 꼼꼼히 살펴보면 파이썬의 구현을 잘 설명되어 있는데, 꽤 복잡한 구조로 구현이 되어 있음을 확인할 수 있습니다. 시간이 허락한다면 꼭 공식 문서를 읽어보시기 바랍니다. C vs Python (Cpython)/* C code */ int