본문 바로가기

분류 전체보기

(Django) Django에서 비즈니스 로직 관리하기 Django와 Ruby On Rails를 사용하면서, 항상 고민되는 점이 있다. 각 프레임워크에서 비즈니스 로직을 모아두고, 관리하기에 적합한 위치가 어디인가에 대한 점이다. Rails 3/4 버전을 사용하면서, 찾아봤던 글은 레일즈에 Service/Decorator Layer 적용하기에 정리했었다. 이번에는 Django에서 비즈니스 로직을 관리하는 방법에 대해서 정리해보고자 한다. Django에서 비즈니스 로직을 추가할만한 곳은 크게 4가지이다. 그리고 이들 모두 각각 장/단점을 갖고 있다. model view service queryset / manager 1. Model Django에서 제안하는 비즈니스로직 관리 방식은 Model에 기능을 추가하는 것이다. MVC의 기본 설계 패턴은 Fat Mode..
(Django) CacheOps - ORM에 Redis Cache 쉽게 적용하기 django-cacheops는 Django에 Redis Cache를 쉽게 적용하고, 관리할 수 있도록 도와주는 라이브러리이다. Cacheops의 가장 큰 장점은 ORM에 캐시를 간편하게 적용할 수 있단 점이다. 이번 포스팅에서는 Cacheops의 특징과 주의할점에 대해서 정리해보고자 한다. Cacheops의 특징 A. ORM Cache A-1. 사용방법 모델에서 캐시를 바라보도록 변경하고 싶으면, 설정 파일에 아래와 같은 옵션을 추가해주면 된다. CACHEOPS = { 'auth.user': {'ops': 'get', 'timeout': 60}, } 위와 같이 추가하면, User 모델을 get으로 조회하는 경우, DB보다 캐시를 먼저 바라보게 된다. User.objects.get(user_id=1) 특정..
Text To Speech API 비교하기 IT 기술 관련 음성을 텍스트로 변환하는 방법에 대해서 스터디를 하면서, TTS API들을 비교해봤다. 비교해본 API 서비스는 크게 3가지이다. 1.네이버 클로바 - Clova Speech Recognition(CSR) 2.AWS - Amazon Transcribe 3.구글 클라우드 - Cloud Speech-to-Text 비교 결과는 다음과 같다. 서비스 네이버 Amazon Transcribe Google Cloud 음성 파일 전송 방식 바이너리 데이터를 API으로 전송한다. S3에 저장된 파일을 전송한다. 바이너리 데이터를 API으로 전송하거나, 구글 스토리지에 저장된 경로를 전달한다. 음성 파일 크기 60초 이내 60초 이상 지원 60초 이상 지원 결과 인식 비동기 처리 지원 X ( API으로 즉..
티스토리 에디터처럼 코드 하이라이트 변경하기 1. HTML에 아래의 코드를 추가한다. atom css 파일은 hilight.js에서 다운받은 후, 티스토리에 업로드해서 사용하면 된다. 2. 티스토리 CSS 변경하기 /* 문단 간격 */ .entry-content p { margin-bottom:30px; display: block; margin-block-start: 1em; margin-block-end: 1em; margin-inline-start: 0px; margin-inline-end: 0px; } /* code highlight */ .entry-content pre { background-color: #fafafa; padding:20px; font-size: 14px; padding: 15px; border-radius: 3px; f..
(Django) cached_property 란? 동일한 인스턴스의 Property를 여러번 호출하는 경우, 중복으로 연산작업을 하게 된다. Property 안에서 호출하는 함수가 비용이 큰 연산작업인 경우, 중복 연산 작업이 API 성능을 크게 떨어트릴 수 있다. Django의 cached_property decorator를 사용하면 이러한 이슈를 해결할 수 있다. cached_property는 처음 호출된 Property 함수 결과값을 캐싱해둔다. 그리고 이후에는 캐싱된 결과값을 리턴한다. 그러면 동일한 Property를 여러번 호출하더라도, 한 번의 연산만 하게 된다. Sample from django.utils.functional import cached_property from weather.utils import WeatherAPI from ..
(PostgreSQL) PostgreSQL Client Tool 비교하기 나는 PostgreSQL Client 유목민이다 🐎🐎 그러던 중 PostgreSQL Client 비교한 글을 읽어봤는데, 꽤 유용했다! 적당한 툴을 찾지 못해서 PGAdmin, Psequel를 혼용해서 사용하고 있었는데, 이제는 TablePlus으로 정착하려고 한다. PostgreSQL Client에 정착한 기념으로, 이번 포스팅에서 PostgreSQL Client Tool 을 정리해보고자 한다. 1. TablePlus ★★★★★ 한줄평 짱이다. 일단 설치해야한다. 장점 이쁘다. 탭 전환이나 데이터가 보여지는게 빨라서 가볍게 느껴진다. 그럼에도 불구하고 기능이 많다. Query Formmating 기능이 있다. 탭을 가로로 나눌 수 있다. 쿼리 자동완성 기능도 있다. 필터 기능이 있다. 데이터 조회 Li..
최범균 <DDD START! > 4-5장 요약 4장. 리포지터리와 모델 구현 별도 테이블에 저장하는 밸류 매핑 애그리거트에 속한 객체가 밸류인지 엔티티인지 구분하는 방법은 고유 식별자를 갖는지 여부를 확인하는 것이다. 하지만 식별자를 찾을 때 매핑되는 테이블의 식별자를 애그리거트 구성요소의 식별자와 동일한 것으로 착각하면 안된다. 별도 테이블로 저장되고 테이블에 PK가 있다고 해서 테이블과 매핑되는 애그리거트 구성요소가 고유 식별자를 갖는 것은 아니다. 보통 주문 애그리거트는 실주문을 의미하는 Order 테이블과 주문 품목을 의미하는 Order Lines 테이블로 구성되어 있다. 여기서 주문 품목(Order Lines)은 밸류이다. Order Lines 테이블도 고유 PK를 갖고 있지만, 주문 애그리거트를 식별하는 고유 식별자는 주문번호이다. (위 ..
2019년 3월 셋째주 주간 로그 #금주의 포켓 #Glue AWS Glue 간단 사용기 – 1부 / ATHENA - AWS Glue와 통합 AWS Glue 간단 사용기를 따라해보니 대략 어떤 느낌인지 감이 왔다 ㅎ_ㅎ 데이터 워크플로우 관리 툴로 이해하면 될 것 같다. 그리고 Glue에서 만들어진 데이터베이스는 Athena / EMR / REDSHIFT에서 바로 가져다 쓸 수 있어서, 데이터베이스/스키마 관리에도 용이해보인다. Athena 테이블 / 파티셔닝 관리도 편해보인다. Glue를 안쓰면, 테이블 파티셔닝 해주는 배치를 따로 돌려줘야한다. 데이터베이스 / 테이블을 한군데에서 관리하고, 데이터 가공 배치를 서버리스 환경에서 돌리고 싶을 때 Glue를 사용하면 좋을 것 같다. #Django - Signal Django best pra..