본문 바로가기

분류 전체보기232

django Elasticsearch 사용기 - (음식 검색 개선) Elastic Search를 사용하기 전 기존 검색 기능에서 겪었던 사항들정확도가 떨어진다(매우 중요)기존에는 Django에서 Full Text Search를 위해 제공하는 SearchVector, SearchRank, SearchQuery를 이용해서 영어 검색에는 좀 정확할지라도 한글검색에서는 기존 사용자들이 익숙한 검색 결과를 받을 수 없습니다.그렇게 많이 떨어지는건 아니지만 관련된 keyword들이 나오지 않는게 조금 문제였습니다. 예를 들면 스타벅스 아메리카노를 검색하면 정말로 스타벅스 아메리카노만 검색결과에 나오고 관련이 있는 스타벅스 또는 아메리카노는 결과에 안 나왔습니다.비슷한 음식 검색이 가능한 타사 서비스가 있어서 유저들이 많이 비교한다.느리다항상 local서버와 QA서버에서 검색 기능을.. 2024. 7. 7.
Django 코드 품질 향상시키기(with black, isort, flake8, pre-commit, makefile) Django pycharm black 세팅하기 0. black Black은 Python 코드 포맷터로, 코드를 일관되고 깔끔하게 유지하는 데 사용됩니다. Black은 "The uncompromising code formatter"라는 슬로건을 가지고 있으며, 개발자가 스타일 가이드에 대해 신경 쓸 필요 없이 자동으로 코드를 깔끔하게 정리해 줍니다. Black은 PEP 8-Python의 공식 스타일 가이드를 기반으로 하되, 몇 가지 스타일 선택을 추가로 제공합니다. Black의 주요 특징: 결정적 포맷팅: 동일한 코드에 대해 항상 같은 결과를 제공합니다. 코드의 가독성 증진: 긴 줄을 적절하게 분할하고, 여러 스타일 요소를 자동으로 조정하여 코드의 가독성을 향상시킵니다. 손쉬운 통합: Git 훅, 편집기 .. 2024. 4. 22.
RDS, EC2, Openvpn, TablePlus을 이용해서 VPN 터널링구현하기 VPN, Tunneling을 이용해서 RDS에 연결하는 이유 VPN(가상 사설망) 및 터널링을 사용하여 RDS(관계형 데이터베이스 서비스)에 연결하는 이유는 주로 보안과 네트워크 접속성을 강화하기 위해서입니다. 여러 이유로 인해 이러한 접근 방법을 선택할 수 있습니다: 보안 강화: VPN 및 터널링은 데이터 전송을 암호화하여 보안을 강화합니다. 이를 통해 데이터가 노출되거나 무단으로 접근되는 것을 방지할 수 있습니다. 인증 및 접근 통제: VPN을 사용하면 네트워크에 연결된 각 디바이스가 신뢰할 수 있는 디바이스인지 확인할 수 있습니다. 이는 불법 접근을 방지하고 권한이 없는 사용자의 데이터베이스 접근을 막을 수 있습니다. 외부 접속 보안 강화: 인터넷을 통해 직접 RDS에 연결하는 것은 보안 위협에 노.. 2024. 3. 1.
DRF throttling 사용기 스로틀링 개념 스로틀링은 특정 기간 동안 시스템 또는 장치가 만들 수 있는 요청 수를 제한하는데 사용되는 기술입니다. 제한을 사용하는 데는 다음과 같은 몇가지 이유가 있습니다. 시스템 또는 네트워크의 과부하를 방지하려면 : 시스템이 한 번에 너무 많은 요청을 받으면 과부하 상태가 되어 모든 요청을 효과적으로 처리할 수 없습니다. 스로틀링은 시스템이 용량 제한 내에서 유지되도록 하는 데 도움이 됩니다. 악의적인 활동으로부터 보호하기 위해 : 경우에 따라 과도한 요청으로 시스템을 압도하려는 악의적인 공격에 대한 방어 수단으로 제한을 사용할 수 있습니다. 가능한 요청 수를 제한함으로써 시스템은 이러한 공격을 더 잘 견딜수 있습니다. 예를 들면 음식검색 API를 만들었는데 초당 막 1만회 요청이 들어오면 이것을.. 2023. 1. 8.
Django replica 적용기(RDS + Postgresql) Database 이용 시 Replica를 사용하는 이유 High availability(고가용성) : replica 중 하나가 다운되더라도 데이터베이스를 항상 사용할 수 있도록 복제본을 사용할 수 있습니다. 예를 들면 Django에서 사용할 때 어떤 쿼리가 데이터베이스를 길게 잡아먹어서 데이터베이스가 다운되어도 읽기전용 Replica가 살아 있으면 해당 데이터베이스로 대신 사용 가능해서 고가용성으로 사용할 수 있습니다. Load balancing(로드벨런싱) : replica를 사용하여 들어오는 요청의 로드를 여러 시스템에 분산하여 데이터베이스의 성능과 확장성을 향상 시킬 수 있습니다. 예를 들면 데이터베이스 한개에서 Read와 Write를 사용하는데 특정 API를 Read하는 전용 데이터베이스를 생성시.. 2023. 1. 8.
admin action custom 하기 마케터 분의 요청 기존에 생성한 미션 7개를 2번 더 복사해서 14개를 만들어 총 21개를 만들고싶다고 했습니다. 이렇게 해야 단순 반복 action을 줄이고 더 빠르게 action 할 수 있기 때문입니다. 서버 쪽에서 해결 할 수 있는 방법 Django Admin에서 어떤것을 제공하는지 찾아보다가 custom action을 이용하면 해결할 수 있습니다. admin에서 actions를 이용해서 해결 이제 이러한 문제를 해결하기 위해 공식문서에서 action부분을 확인했습니다. Admin Action(개념) Actions as ModelAdmin methods 다음 예시는 함수로 정의된 make_published action을 보여줍니다. 완벽하게 괜찮지만 코드 설계 관점에서 보면 완벽하지 않습니다. Ac.. 2023. 1. 3.