💻 프로그래밍/Python
-
백엔드 개발자가 만들어 본 App 테스트 자동화 (feat. Appium, Jenkins, AWS DeviceFarm)💻 프로그래밍/Python 2024. 1. 7. 17:39
안녕하세요! QA엔지니어(?) Jay입니다 ㅋㅋㅋㅋ ~는 아니고 저는 백엔드 개발자입니다. 오늘 이렇게 시작을 한 이유는 최근 회사에서 했던 과제 중 하나가 앱로그 QA 자동화입니다. "갑자기 왠 QA?"라고 하신다면...ㅋㅋ 해당 과제가 중요하기도 했고 저희팀이 플랫폼 전반적인 과제들을 하고 있기 때문에 저희팀에서 과제를 가져와서 진행하게 되었습니다. 게다가 단순히 앱 UI 테스트 자동화는 아니고, 앱에서 어떤 액션을 할때마다 정상적으로 로그가 남는지까지 확인하는 End-To-End 테스트라서 백엔드 영역의 핸들링도 필요하기 때문에 저희 쪽에서 진행하게 된 이유도 있습니다. 이런저런 이유로 제가 진행했던 과제에서 App 테스트 자동화를 어떤 식으로 했고 어떤 기술들을 이용했는지 정리 및 소개를 하려고 ..
-
[SQLAlchemy] async_scoped_session과 context-local💻 프로그래밍/Python 2022. 10. 1. 20:42
안녕하세요! 개발자 Jay입니다! 오늘은 지난번 Session vs scoped_session에 이어서 async_scoped_session에 대해서 정리해보려고 합니다! async_scoped_session이 나오게 된 배경 async_scoped_session은 1.4.19 release에서 추가된 클래스입니다. 그럼 async_scoped_session은 왜 추가되었을까요? 릴리즈 내용을 먼저 확인해 보겠습니다. scoped_session과 AsyncSession 사이의 비호환성을 해결하기 위해 async_scoped_session이 구현되었다고 합니다. 그리고 async_scoped_session.remove()와 함께 사용되어야 한다고 하네요. 그럼 어떤 비호환성이 있었을까요? #6584 이슈를..
-
[SQLAlchemy] Session vs scoped_session💻 프로그래밍/Python 2022. 10. 1. 02:23
안녕하세요! 개발자 Jay입니다! 블로그에 말하지는 않았지만 퇴사한지 거진 한 달쯤 다되어가네요 ㅋㅋㅋ 입사 전 이것저것 해볼 계획은 많았는데... 생각보다 많이 못해서 아쉽지만... 여하튼ㅋㅋㅋ 토이 프로젝트 프레임워크로 FastAPI를 사용하면서 SQLAlchemy를 사용했었습니다. 그때는 막상 구현하는데 급급해서 자세히 알아보지 못했던 부분들이 있었습니다. 이번에 repository 쪽 코드를 리팩토링 하면서 Session과 scoped_session에 대한 내용을 제대로 파보았습니다. Session이란? SQLAlchemy에서 말하는 Session은 DB Session과는 전혀 다릅니다.(혹시나 헷갈릴 수도 있으니) SQLAlchmey의 Session은 일종에 ORM 버퍼라고 보면 되며 ORM 매..
-
RabbitMQ 톺아보기 2부 (feat.pika)💻 프로그래밍/Python 2022. 9. 17. 20:47
RabbitMQ 톺아보기 1부에 이어서 2부를 시작하겠습니다! RabbitMQ 톺아보기 1부 안녕하세요! 개발자 Jay입니다! 최근에 저의 관심사는 Event-driven, MSA입니다. 아무래도 MSA의 문제가 서비스가 잦은 호출로 인한 네트워크 과부하, 데이터 정합성, 트랜잭션 등에 문제가 있다 보니 E jay-ji.tistory.com 2부에서는 실제 python application으로 RabbitMQ를 활용하는 방법에 대해 알아보려고 합니다. pika라는 라이브러리를 활용할 예정이에요! pika는 RabbitMQ 공식 홈페이지 듀토리얼에서도 사용되는 라이브러리입니다! 공식홈페이지에 보면 다양한 언어에 대해 친절하게 예제들이 만들어져 있습니다! RabbitMQ 듀토리얼과 pika공식문서가 진짜 잘..
-
RabbitMQ 톺아보기 1부💻 프로그래밍/Python 2022. 9. 12. 22:33
안녕하세요! 개발자 Jay입니다! 최근에 저의 관심사는 Event-driven, MSA입니다. 아무래도 MSA의 문제가 서비스가 잦은 호출로 인한 네트워크 과부하, 데이터 정합성, 트랜잭션 등에 문제가 있다 보니 Event-driven에 관심을 가지지 않을 수가 없었습니다. 이전 회사에서는 MSA 서비스간의 잦은 호출들은 gRPC를 통해 어느 정도 해결했으나 데이터 정합성과 트랜잭션에 대해서는 여전히 고민이 많았던 것 같습니다. 이런 점을 저 스스로 완벽하게 해결해 보지 않았고 이론, 실무적인 부분들에 대해 확실하게 알지 못하고 있어서 이번에 쉬면서 한번 스터디해보려고 마음을 먹었습니다! 그 첫번째가 RabbitMQ를 톺아보는 것입니다! RabbitMQ는 비동기 처리를 위해 Celery와 함께 자주 써보..
-
어느날 신입 개발자가 나에게 물었다..."python에서 staticmethod를 사용하는 것에 있어서 메모리 이슈가 없는 것 일까요?" (feat. java)💻 프로그래밍/Python 2022. 7. 17. 18:57
제곧내(제목이 곧 내용)입니다! ㅋㅋㅋ 최근 저희팀에 합류하신 ㅅㄱ님께서 개발 중 이런 질문을 하셨습니다. 사실 이질문을 듣고 라는 생각이 먼저 떠올랐습니다ㅠㅠ 그리고 python을 메인으로 쓰면서 이런 기본적인 부분을 숙지하지 않았다는게 부끄럽기도 했습니다. (함께 자료를 찾아보고 토론의 시간을 가짐) 처음 C, C++로 개발을 했을 때는 메모리에 관리에 신경 쓰면서 개발을 했던 것 같은데 python으로 개발하면서 이런 부분을 신경을 안 썼던 것 같습니다. (python은 개발자가 동적으로 메모리를 할당할 수 없고 알아서 관리해줍니다) C++처럼 malloc(), calloc(), realloc(), free() 등을 통해 동적 할당을 제어하지도 않고, 변수에 그냥 갖다박으면(?) 알아서 메모리 할당..
-
Context Manager 섹시하게 사용하기 😎💻 프로그래밍/Python 2022. 1. 22. 16:17
안녕하세요. 오늘은 Context Manager에 대해서 알아보려고 합니다. 먼저 Context Manager가 뭔지에 대해 알아야겠죠? A context manager is an object that defines the runtime context to be established when executing a with statement. The context manager handles the entry into, and the exit from, the desired runtime context for the execution of the block of code. Context managers are normally invoked using the with statement (described i..
-
Python 에서 몽고반점 말고 몽고디비(MongoDB) 다뤄보기💻 프로그래밍/Python 2021. 9. 26. 22:33
안녕하세요! 운동하는 개발자 Jay 입니다! 오늘은 몽고반점 ... 아 아니 몽고디비(MongoDB)에 대해서 알아보고 간단한 사용법 및 DDD(Domain Driven Development) 개념 중 Repository를 Pymongo를 사용해서 간단하게 구현해 보겠습니다! 1. What is MongoDB 저는 이번에 이직을 하면서 처음 MongoDB를 사용해봤는데요. (아직 제대로 사용은 안해봤구 그냥 보기만 해 봤네요...ㅎㅎ 그래서 지금 블로그로 정리하면서 공부중) NoSQL 종류 중 하나로 JSON과 같은 동적 스키마형 도큐먼트들(몽고 DB는 이러한 포맷을 BSON이라 부름)을 선호함에 따라 전통적인 테이블 기반 관계형 데이터베이스 구조의 사용을 삼가합니다. 이로써 특정한 종류의 애플리케이션을..