728x90 전체 글230 [ElasticSearch] _script 를 사용한 sort Painless 란? ElasticSearch를 사용하다보면 Elastic Query DSL이나 Lucene Query, KQL (Kibana Query Language) 등으로는 원하는 대로 데이터를 조회 및 가공하기 어려운 상황 등이 발생한다. 이런 경우 Painless 라는 Elasticsearch 전용 Script 언어를 이용해서 문제를 해결할 수 있다. Painless는 ElasticSearch 전용으로 만들어진 단순하고 안전한 스크립트 언어로, ElasticSearch에서 inline scripts와 stored scripts에 기본으로 사용된다. _script 를 사용한 sort ElasitcSearch 의 경우 문자열 정렬 기준이 `숫자 -> 영문 -> 한글` 순인데, 기획 쪽에서 브랜.. 2022. 5. 5. [OpenSearch] Settings, Mapping 설정하기 ElasticSearch 와 AWS OpenSearch 의 settings, mappings 작성 방법은 크게 다르지 않지만, ElasticSearch Settings, Mapping 설정: https://yonikim.tistory.com/26 OpenSearch 의 경우 플러그인 커스텀이 안되기 때문에 nori 가 지원되지 않는다. AWS OpenSearch 에서 사용 가능한 플러그인: https://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/supported-plugins.html nori 의 조상님인 은전한닢 을 사용하여 만든 settings 는 아래와 같다. ▷ Settings `index.mapping.ignore_m.. 2022. 5. 3. [Nest.js] Custom Decorator interceptor 작업을 진행하다 보니 product 라는 같은 서비스 내부에서 이게 product 이벤트인지 item 이벤트인지 구분이 필요했다. 그리하여 작업하게 된 Custom Decorator. reflect-metadata 라이브러리를 사용하기로 결정했다. npm install reflect-metadata ▷ tsconfig.json { "compilerOptions": { "target": "ES5", "experimentalDecorators": true, "emitDecoratorMetadata": true } } ▷ sns.decorator.ts import "reflect-metadata"; export const UseSnsDecorator = ( serviceName: stri.. 2022. 4. 12. [Nest.js] Custom Interceptor 상품은 이커머스의 꽃으로, 검색 및 다른 서비스들에서 상품 데이터를 Meta 로 들고 있다 보니 상품 데이터가 변경될 때마다 Sync 를 맞춰줘야 했다. N분에 한번씩 스케쥴링 하여 ETL 하는 방법도 있겠지만 그렇게 하면 데이터베이스에 과부하가 심할거 같아서 상품의 create/update/delete 이벤트가 발생할 때마다 AWS SNS 에 메시지를 보내는 방식으로 구현하기로 결정했다. 상품 backend api 내에 있는 function 별로 코드 내부에 삽입하는 방법도 있지만, 코드가 너무 더러워진다고 생각되어 Custom Interceptor 를 만들기로 결정했다. ▷ sns.interceptor.ts 우리는 grpc 통신을 이용하여 각 서비스 별로 통신하고 있었기에 Service 단에 해당 I.. 2022. 4. 11. [API Gateway] REST API 를 Amazon S3 프록시로 생성 CloudFront 를 통해 접근하는 방법도 있지만, DNS 를 새로 만들고 싶지 않아서 API Gateway 를 사용해 프록시 생성하는 방법으로 진행했다. 먼저 API Gateway 에서 Amazon S3 작업을 호출하도록 허용하는 IAM Policy 을 만들어 주자. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "*" } ] } IAM Role 을 생성하는데, 신뢰할 수 있는 AWS 서비스로 API Gateway 를 선택해준 후 위에서 만든 정책을 연결해 준다. 신뢰 관계를 편집해서 직접 수정한다면 아래와 같이 기재해 주자. { "Version":.. 2022. 1. 11. [Lambda] API Gateway + Lambda 를 이용하여 S3 에 이미지 업로드 aws-sdk 를 사용하여 코드 상에서 직접 업로드하는 기능을 추가하여 이미지 업로드 API 를 만들 수도 있지만, API Gateway 와 Lambda 를 이용하여 좀더 쉽고 빠르게 업로드하는 방법을 구현해보려고 한다. (참고로 API Gateway 프리티어는 12개월 동안 매달 100만개씩까지만 포함되기 때문에, 그 이상이 될 경우에는 별도로 API 를 구현하는 방식을 채택하는게 좋다.) IAM 역할 만들기 두 개의 Policy 를 붙여주자. - AWSLambdaBasicExecutionRole: AWS CloudWatch > Log Groups 에 Lambda 로그를 남길 수 있는 권한 - AmazonS3FullAccess: AWS S3 모든 버킷에 접근할 수 있는 모든 권한 (s3:PutObjec.. 2021. 12. 20. 이전 1 ··· 21 22 23 24 25 26 27 ··· 39 다음 728x90 반응형