일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 자바
- Baekjoon
- 코딩테스트
- 그리디
- 개발자
- 알고리즘
- 애자일
- Spring
- 엘라스틱서치
- cleancode
- 데이터베이스
- 스프링
- spring boot
- 클린코드
- 애자일프로그래밍
- JPA
- 그리디알고리즘
- API
- framework
- 프레임워크
- database
- 읽기쉬운코드
- 코딩
- Elasticsearch
- 개발
- 코드
- 애자일기법
- 백준
- ES
- Java
- Today
- Total
목록전체 글 (173)
튼튼발자 개발 성장기🏋️
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b795KX/btsIVHW7hHC/lH5Hz2X4THqYFeEMjPtyT0/img.png)
카프카 브로커 · 클러스터 · 주키퍼Apache Kafka는 분산형 스트리밍 플랫폼으로, 대량의 데이터를 빠르고 신뢰성 있게 처리할 수 있는 기능을 제공한다. Kafka는 브로커, 클러스터 그리고 주키퍼로 구성된다. 데이터 저장, 전송데이터 저장: Kafka에서 데이터는 주로 토픽(topic)이라는 단위로 저장된다. 토픽은 데이터 스트림의 카테고리라고도 할 수 있다. 각 토픽은 파티션(partition)으로 나뉘며, 파티션은 순차적으로 레코드(record)를 저장한다. 이때 각 레코드는 고유한 오프셋(offset)을 가진다. 파티션을 이용하여 데이터 저장의 병렬 처리가 가능해진다. 보통 파티션 개수만큼 컨슈머를 생성하여 병렬처리한다.데이터 전송: Kafka 브로커는 프로듀서(producer)로부터 데이터..
아파치 카프카의 탄생아파치 카프카(Apache Kafka)는 2010년 LinkedIn에서 실시간 데이터 피드를 처리하기 위한 내부 프로젝트로 시작되었다. 이 프로젝트는 대규모 데이터 스트리밍과 실시간 로그 수집, 분석을 위해 개발되었으며, 2011년 아파치 소프트웨어 재단(Apache Software Foundation)으로 기부되어 오픈 소스로 공개되었다.더보기GitHub - apache/kafka: Mirror of Apache KafkaKafka Improvement Proposals - Apache Kafka - Apache Software Foundation카프카의 설계는 대용량 데이터 처리를 염두에 두고 있으며, 특히 다음과 같은 요구 사항을 충족하기 위해 만들어졌다.높은 처리량: 초당 수백..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kO4Dd/btsGd6FpqGT/XZVwqQoLZlOP6EKUpL65n1/img.png)
AWS에서 2018년 정식 출시한 AppSync를 사용하여 OpenSearch에서 데이터를 조회해본다. AWS AppSync with DynamoDB 를 통해 step 4까지 선행 후에 본 포스트를 참고하는 것을 권장한다. OpenSearch에서 데이터를 조회해야하므로 조회할 OpenSearch의 index와 조회해볼 데이터를 넣어둔다. step 1. schema 생성 아래와 같이 스키마를 생성한다. type Source { vseq: Int useripaddress: String sessioninit: Boolean } type Query { getSomeByUseripaddress(useripaddress: String!): [Source] getSomeByVseq(vseq: Int!): [Sourc..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bruvkA/btsFY9vIA6S/KBUuE8af6WTRKJvCOGn9L1/img.png)
AWS에서 2018년 정식 출시한 AppSync를 사용하여 DynamoDB에서 데이터를 조회해본다. GraphQL을 기반으로한 AppSync는 [그림 1]과 같이 AWS Lambda, DynamoDB, Elasticsesarch, Aurora 또는 HTTP를 이용해 브로드캐스팅하여 원본 데이터를 가지고 손쉽게 api를 제공해줄 수 있다. 이를 이용하여 운영 중에도 신규 api가 추가되거나 기존 api의 spec이 변경되거나 신규 앤드포인트가 생겨도 큰 변화 없이 간편하게 api를 제공하기 위함이다. AppSync API 생성 step 1. AppSync > APIs 우측 상단에 API 생성 버튼 클릭 step 2. API type 선택: GrapgQL APIs, Design from scratch [그림..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/BlLXZ/btsFRuAhSin/UapsaDXaCoWubiiOg7fDP0/img.png)
AWS AppSync란? AWS AppSync를 사용하면 개발자가 안전한 서버리스 고성능 GraphQL 및 Pub/Sub API를 사용하여 애플리케이션과 서비스를 데이터 및 이벤트에 연결할 수 있습니다. AppSync는 GraphQL을 기반으로 간소화된 데이터 액세스를 할 수 있고 쿼리를 사용할 수 있다. GrapghQL에 대한 내용은 공식 docs를 참고힌다. Pub/Sub을 위한 webSocket을 제공한다. 인메모리 캐시를 사용할 수 있다. js, ts를 지원한다. VPC를 통해 비공개 api 보안 API Key를 제공하여 IAM, Lambda 권한 부여를 지원하는 제어 기능이 있다. 그 밖에 AppSync의 기능은 공식 docs를 참고한다. GraphQL API 설계 스키마 각 GraphQL ap..
Who 나는 이번 해에 6년차를 맞이하는 백엔드 엔지니어다. 지금까지는 회사에서 시키는 것 외에 "뭘 더 알아갈 것이 없나?"하고 이것 저것 시도해보고 장애도 많이 내보면서 "경험"에 포커스를 맞추어 경력을 쌓았다. 6년을 맞이하는 지금, "이제 주니어를 벗어나야하지 않을까?"라는 물음표를 내게 던져보았다. 후배들 앞에서 떳떳하게, 당당하게 창피하지 않은 개발자가 되고싶다. Why 6년동안 내가 생각한 "시니어"라 함은 후배가 업무를 어려워하고 있을 때, 적절한 힌트를 줄 수 있고, 여러 이슈에 대한 해결방안을 제안할 수 있으며 자신이 맡은 메인 업무에 대한 히스토리와 개발 방향 그리고 앞으로의 계획을 설명할 수 있어야한다. 큰 사이즈의 프로젝트가 들어와도 "어디부터 어디까지 손을 대고 어떤 것들을 고려..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/F3P8w/btsBY7WvcUA/CZdLxbkcxN0lBoloEoiuz1/img.png)
Match All Query match_all 파라미터를 사용하는 Match All Query는 색인에 모든 문서를 검색하는 쿼리다. 가장 단순한 쿼리로 일반적으로 색인에 저장된 문서를 확인할 때 사용된다. POST movie_search/_search { "query": { "match_all": {} } } Match Query 문장을 형태소 분석을 통해 텀으로 분리한 후 이 텀들을 이용해 검색 질의를 수행한다. POST movie_search/_search { "query": { "match": { "movieNm":"그대 장미" } } } Multi Match Query multi_match 파라미터를 사용한다. Match Query와는 다르게 여러 개의 필드를 대상으로 검색해야할 때 사용한다. ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bwlUC0/btsBZFZOwgv/0CPuQXStXwRMMq1mh9fxK1/img.png)
문장은 색인 시점에 텀으로 분해되고 검색 시 이 텀을 일치시켜야 검색이 가능해진다. [그림 1]은 색인 시점과 검색 시점의 기본적인 동작 과정을 표현한다. 엘라스틱서치는 색인 시점에 Analyzer를 통해 분석된 텀을 Term, 출현빈도, 문서번호와 같이 역색인 구조를 만들어 내부적으로 저장한다. 검색 시점에는 Keyword타입과 같은 분석이 불가능한 데이터와 Text타입과 같은 분석이 가능한 데이터를 구분해서 분석이 가능할 경우 분석기를 이용해 분석을 수행한다. 이를 통해 검색 시점에도 텀을 얻을 수 있으며 해당 텀으로 역색인 구조를 이용해 문서를 찾고 이를 통해 스코어 계산으로 결과를 제공한다. 검색 질의 표현 방식 엘라스틱서치에서 제공하는 검색 api는 질의(Query)를 기반으로 동작한다. 검색 ..