본문 바로가기

728x90

개발 노트/Experience

(8)
24.10.22 ~ 24.11.22 짧은 시간, 남은 흔적 약 한 달가량 다녔던 회사에 대해 돌아보고자 하는 차원에서 이 글을 작성하려 한다. 개인 심정을 드러내는 글이기에 이 글이 나에게 추후 어떤 영향을 끼칠지 모르지만 실패로부터 배우고 시도로부터 나아가기 위한 노력이라는 감상을 가진 채로 적어보고자 한다. 한 달가량 정도 경험한 일을 가지고 “떠난다”라고 표현하는 게 너무 과분한 느낌도 든다. 적어도 나에겐 “떠난다”라는 표현은 그동안 짊어진 무게와 책임을 내려놓고 다음 스텝을 향해 한 걸음 내딛는다라는 표현이기 때문이다. 그럼에도 불구하고 이런 글을 쓰는 건 “한 달”임에도 불구하고 여운이 남는 경험 때문이다. 왜 떠나는지 결국 “경험” 때문이다. 배경은 이러하다. 일전에 면접을 봤던 회사에서 다시 면접 제안이 왔었다. 다시 면접을 보고 돌아왔을 때 이 ..
최근 적용한 FastAPI 아키텍처 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스개요프로젝트 경험동안 FastAPI 기반의 BackEnd API 서버를 개발해왔다. 처음엔 Django를 사용하면서 백엔드 개발을 시작했었는데 이제는 FastAPI가 더 익숙하다. 아무래도 Java 와 SpringBoot를 접하면서 새롭게 알게된 객체에 대한 개념들을 Python에도 적용하기 위한 최선의 방법인듯 하다. 적지않은 연습 끝에 FastAPI 기반의 프로젝트를 진행할 떄 스스로 코드 아키텍처를 구성해낼 수 있게 되었다. 하지만 부족하다 싶었던점은 FastAPI가 Python 기반이다보니 유용하다고 생각된 개념들을 어떻게 적용할 수 있을까에 대한 부분이었다. 최근 이러한 부분을 해소시킬만한 요소를 직접 적용하고 발..
[Experience] wkhtmltopdf 사용으로 인해 발생한 SSTI 해결하기 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 과거 프로젝트에서 겪은 문제와 해결했던 방법들을 기록하고자 이 글을 적어본다 개요 신입 백엔드 개발자로 입사해 회사의 첫 프로젝트에서 개발할 당시 경험한 일이다. 이 당시 진행하던 프로젝트는 조합 운영 관리 플랫폼이었고 여타 프로젝트가 그렇듯 User/Admin으로 작업 영역을 나눠둔 상황이었다. Admin 측에서는 사용자들을 대상으로 특정 문서를 발행해 전달해야 했으며 이 문서는 미리 정의해 놓은 html을 비즈니스 로직에 따라 pdf로 변환했다. Admin은 주로 플랫폼 운영자분들이 사용하는 영역이었기에 회의를 거친 후 pdf 생성에 편의성을 높이기 위해 Jinja2 Template을 도입했다. 3년이 지나 쓰는 글..
[AWS] SESv2를 이용한 수신측 메일 열람여부 확인하기 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 개요 백엔드 개발자가 되고 나서 얼마 지나지 않는 시점의 일이었다. "메일을 전송했을 때 수신한 사람이 메일을 열어봤는지를 확인할 수 있는가"에 대한 기능 구현이 가능한지를 논의하던 자리였다. 해당 기능에 대한 구현은 굳이 열어봤는지까지 확인할 필요가 없는 것으로 일단락되었던 것으로 기억한다. 그 당시에는 신입 개발자였기에 “그걸 어떻게 개발하지?” 라는 생각으로 궁금증만 남았다. 시간이 계속 흘러감에도 이 기능에 을 어떻게 구현할 수 있을까라는 생각이 남아있었다. 그러나 최근 AWS SES v2 문서를 보면서 해당 기능에 대한 구현 가능성을 엿보게 되었다. 이 포스팅은 제목과 같이 AWS SESv2와 SNS를 이용해 송..
tradingview.com로 알아보는 Websocket 데이터를 수집하는 방법 개요https://www.tradingview.com/ 라는 사이트에서 외환 거래 데이터를 수집해야 하는 일을 맡게 되었다. 처음엔 단순하게 페이지를 분석해서 데이터를 얻을 수 있는 동적 크롤링이나 polling 방식을 통해 데이터를 얻을 수 있겠지 싶었는데 이 방법들로는 데이터를 수집하기엔 무리가 있었다.WebSocket이다보니 실시간으로 발생하는 데이터이기 때문에 코드 레벨에서 WebSocket에 연결한 뒤 데이터를 수집해야 했고 더 나아가 이렇게 수집한 데이터를 저장해야 되는 작업을 필요로 했다. 해놓고 보니 난이도가 높다고는 할 수 없지만 적어도 새로운 접근 방식으로 풀어내야 했기에 재밌는 일이었다.그리하여 tradingview.com을 예시로 WebSocket을 통해 데이터를 수집할 때 필요로 ..
Django에 pytest 도입하기 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스개요최근에 작성한 포스팅과 연계되는 내용입니다.  포스팅에 작성했던 내용은 pytest를 사용하면서 자주 사용했던 내용들을 올렸습니다. 이번 포스팅은 pytest를 도입하면서 테스트 코드를 어떤 식으로 적용 해나갔는지에 대한 내용을 다룬 글입니다. 어떻게 도입할까?사내에서 개발된 기능은 개발된 페이지와 API를 직접 호출해봄으로써 테스트 중인 상황이다. 이러한 상황에서 테스트 코드를 작성하고 도입해야한다. 테스트 코드를 작성한 경험이 개인적인 프로젝트를 제외하고는 거의 없었기에 사내 프로젝트에서 테스트 코드를 작성하는 방법에 대해 고민하게 되었다.프로젝트 어떤 코드에 대한 구조를 도입하는 것은 상호간 통용되는 유지보수나 ..
Flask Scheduling이 2번 실행되는 현상에 대해 개요 최근에 특정 시간이 되면 지정된 Slack Channel에 메시지를 전송해 주는 간단한 Flask 서버를 만들었습니다. AWS의 App Runner를 이용해 배포된 상태였는데 어째선지 Flask 서버의 Scheduler가 2번 실행되는 현상을 겪었습니다. 이로 인해 같은 Slack Channel에 메시지를 중복 전송되는 문제가 발생했습니다. 어떻게 된 건지 싶어 이런저런 조사를 하게 되었습니다. 적용된 환경은 Flask 2.2.2에 Scheduling 처리는 APScheduler 3.10.1을 입니다. ╰─$ pip list Package Version --------------------- ----------- APScheduler 3.10.1 ... Flask 2.2.2 ... Flask의 De..
Insecure XMLHttpRequest EndPoint 개요 https가 적용된 Amplify에서 https가 적용되지 않은 ELB를 통해 EC2에 데이터를 전송할 때 일어난 상황이다. 처음에는 HSTS 설정이 되어있는 줄 알고 브라우저에서 http를 치고 들어가면 되겠다 싶었으나 데이터 전송에 실패해 어떻게 전송할까 고민에 빠졌다. 상황은 다음과 같이 Insecure XMLHttpRequest endpoint라는 경고가 뜨거나 alert 창에 unKnown ContentType 이라는 메시지가 발생한다. 어떻게 해결해볼까 개요에서 언급한 것 처럼 처음엔 Amplify 쪽에서 데이터를 보낼 때 https가 적용되지 않은 채로 데이터를 전송하고 있는 줄 알았지만 ELB 설정을 들여다보니 https 설정이 아직 안 걸린 채로 동작하고 있었다. 제일 좋은 방법은 ..

728x90
반응형