전체보기

회고 & 기록

[SoMa]소프트웨어 마에스트로 16기 합격 후기

개요미래의 17기, 그 이후를 위해 도움이 될까 글을 남깁니다. SW마에스트로 SW마에스트로SW Maestro 교육 프로그램 SWM Program 창의력과 재능을 겸비한 연수생을 선발, SW전문가 멘토링, 기본소양 교육, 자기주도형 학습 등을 통해 교육성과 극대화 선발 (2개월) 예비 과정 (2개월) 본 과정 (6swmaestro.org 특이 사항으로는 이번에는 규모가 줄어들어 110명으로 진행되었습니다.지원서 제출지원서는 자기소개서, 수상 내역을 제출하게 되어있습니다.그리고 자격요건이 된다면 디지털 인재 재능 사다리 사업 연계로 1차 코딩테스트 면제를 받을 수 있습니다.자기소개서SW분야의 전문성을 위해 몰입해본 도전, 성장하며 얻은 배움저는 1000자 제한을 거의 꽉 채워서 작성했습니다. 인턴십을 하며..

파이썬 (Python)

MacOS mysqlclient & psycopg2 환경 설정

개요MacOS에서 파이썬 DB 관련 라이브러리인 mysqlclient와 psycopg2를 사용할 때 겪을 수 있는 의존 라이브러리에 관한 정리 글 입니다.brew를 사용합니다.mysqlclient오류Exception: Can not find valid pkg-config name.Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually설정법mysqlclient를 사용하기 위해서는 mysql또는 mysql-client를 설치해야한다.mysql 또는 mysql-client 설치mysqlbrew install mysql pkg-configmysql-client용량: 약 126MBmysql-client@9.0은 mysql_native_passwo..

파이썬 (Python)

Celery 재시도 로직과 Exponential Backoff and Jitter

개요Celery는 파이썬에서 널리 사용되는 비동기 작업 큐 라이브러리로, 주로 분산 작업 처리와 백그라운드 작업 실행을 위해 활용됩니다.비동기 작업에는 외부 API 호출이 포함되는 경우가 많으며, 이러한 작업은 외부 환경의 영향을 받기 쉽습니다. 네트워크 지연, 일시적인 API 장애, 서비스의 부하 등으로 인해 작업이 실패할 수 있습니다. 그러나 실패 원인이 일시적인 네트워크 문제인지, API 서비스의 장기적인 장애인지 즉시 판단하기는 어렵습니다.이 글에서는 Exponential Backoff와 Jitter라는 안정성 보장 기법을 소개하고, 이를 Celery에 적용해 외부 API 통합 시스템의 신뢰성과 복원력을 강화하는 방법을 설명합니다.Celery Task의 재시도 로직Celery task를 정의할때는..

서버(Server)

REST API URL 규칙

리소스 명사는 복수형으로# Good/language-tests# Bad/language-testURL에 kebab-case 사용, parameter에 camelCase 사용# Good/language-tests/language-tests/{testId}# Bad/language_tests/{test-id}/languageTests/{test_id}리소스 URL에 동사 금지# GoodPOST /language-tests# BadPOST /language-tests/create단, CRUD 작업이 아닌 경우에는 동사 사용 가능POST /language-tests/123/revalidate리소스 리스트에는 리소스 갯수 포함GET /language-tests# Response{ languageTests: [ ..

파이썬 (Python)

Python isinstance() 사용시의 주의점

isinstance()파이썬에는 isinstance() 라는 인스턴스가 특정 클래스/데이터 타입인지 검사할 수 있는 메서드가 존재한다. 이는 약타입 언어인 파이썬에서 유용하게 사용될 수 있는 기능이다.import datetime as dtinteger = 1print(isinstance(integer, int)) # Truetoday = dt.date.today()print(isinstance(today, dt.date)) # Truedate → datetime 변환 로직해당 isinstance() 메서드를 이용해 date 객체를 datetime으로 변환하는 다음과 같은 로직이 있다.import datetime as dtdef convert_to_datetime(date: dt.date | dt.da..

인프라 (Infra)

컨테이너 레지스트리 비교

개요Docker Hub는 가장 널리 쓰이는 컨테이너 이미지 저장소이지만, 이 외에도 AWS의 ECR, Google의 GCR, Azure의 ACR, 그리고 GitHub와 GitLab 레지스트리 등 다양한 컨테이너 레지스트리 서비스들이 존재합니다.이번 글에서는 Docker Hub를 포함한 여러 컨테이너 레지스트리 서비스를 비교해, 어떤 옵션이 프로젝트에 적합한지 알아보겠습니다.서비스Docker HubDocker Hub는 Docker의 제작사인 Docker Inc.에서 제공하는 기본 컨테이너 이미지 레지스트리입니다.기본 설정으로 docker pull 명령어를 사용할 때 별도의 레지스트리를 지정하지 않으면, 자동으로 Docker Hub에서 이미지를 가져옵니다. 예를 들어, docker pull nginx와 같이..

인프라 (Infra)

HeadVer 버저닝 기반 Vercel 자동 배포 구현기

개요솔리드 커넥션의 웹 파트를 개발하며 HeadVer 버저닝을 기반으로 Github Actions와 Vercel을 사용해 CI/CD 자동화를 이루어낸 기록을 정리합니다.솔리드 커넥션 웹, 그리고 배포 방식솔리드 커넥션은 교환학생을 돕기 위한 서비스입니다. 웹 애플리케이션은 Next.js로 개발되었으며, 배포는 Vercel을 통해 이루어지고 있습니다.Vercel은 정말 편리한 기능들을 많이 제공하고 있습니다. 그 중 하나는 Github과 잘 연계하여 빌드/배포를 매우 편리하게 해주는 것인데요, Github에 올라온 커밋들을 모두 자동으로 빌드해주고, 지정된 배포 브랜치에 올라온 내용을 자동으로 배포해줍니다. 서비스 CD를 위해서 배포용 release 브랜치를 만들고, 해당 브랜치에 PR을 올리는 것으로 배..

파이썬 (Python)

Celery worker OOM Killed 문제 해결기

개요Celery를 이용하다 celery worker OOM(Out of Memory) Kill 문제가 발생한 것을 해결한 경험을 정리합니다. 최초 문제 발생Celery를 이용하던 중 어느 순간 도커를 이용하여 가동해 둔 Celery worker가 정지해 있는 것을 발견했습니다. 이를 재가동시킨 후 리소스 사용량이 많아 중지된 것인지 확인해 보았습니다.재시작한 컨테이너의 평시 CPU, 메모리 사용량과 디스크 사용량을 확인해 보았습니다.>> docker statsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS45dc370549da celery_wo..

Troubleshooting

Spring 빌드후 실행시 인코딩 깨진 문자 오류

개발 환경인 IntelliJ에서 실행시에는 문제 없이 실행 되는 스프링 앱이 빌드만 하면 어떻게 해서도 이상한 문자만이 무한으로 출력되는 오류가 발생했습니다.  위와 같은 방식으로 인코딩이 깨진채로 무한으로 출력되었습니다. 1. 우선 생각해본것은 단순히 인코딩이 깨진것을 의심해 보았습니다. 중간중간에 읽을 수 있는 코드들도 가끔 출력되기도 했고요.그러나 인코딩이 단순히 꺠진것으로 보기에는 로그가 무한으로 출력되고 있기 때문에 다른 것이 문제라 생각되었습니다. 2. gradle의 문제. 빌드시 사용하는 gradlew 파일이 잘못되었다면 이렇게 오류가 날 수 있다 생각해서 살펴보았지만, 기본 설정에서 달라진 것이 없었습니다. 3. 결국 코드와 설정들을 하나씩 삭제해보며 체크해본 결과 문제는 applicati..

Troubleshooting

Azure Database for MySQL에서 require_secure_transport 문제

Azure Database for MySQL는 기본적으로 보안 연결을 요구한다. DBeaver등으로 연결할때 오류가 발생했는데, 간단한 해결방법은 설정 -> 서버 매게 변수 -> require_secure_transport 를 OFF로 변경해주면 된다.

Wibaek
'분류 전체보기' 카테고리의 글 목록 (3 Page)