Collection Flashcards
O que pode ser Source do Kinesis Data Streams? O que pode ser Target?
8 Sources: SDK, KPL, Spark, Kafka, Kinesis Agent, AWS IoT, CloudWatch, Kinesis Data Analytics
6 Targets: SDK, KCL, Spark, Kinesis Connector. Kinesis Firehose, Kinesis Data Analytics, AWS Lambda
Quais são os modos em que o Kinesis Data Stream Opera e suas particularidades?
Provisioned: Define o numero de shards e a capacidade default por Shard é de 1MB/s ou 1000 registris de input
On-Demand: Ele faz automaticamente e o default é 4Mb/s ou 4000 registros, paga pelo stream por hora e por GB. Ajusta a capacidade baseado na média do consumo dos ultimos 30 dias.
Quais são as formas de segurança disponiveis no Kinesis Data Stream e qual é mais dificil e porque?
São 4: IAM policies, HTTPS, KMS e Client Side encryption, mas é bem mais difícil de implementar
Qual a diferença básica entre a call de API PutRecord e PutRecords?
PutRecord pode fazer apenas 1 PUT, enquanto PutRecords usa BATCHING e consegue fazer vários de uma vez com apenas 1 call e isso aumenta o throughput
Quando é recomendado usar o Kinesis Producer SDK?
Usado para Mobile e IOs devices, e é recomendado quanto tivermos:
1) Não importa Alta latência
2) Baixo Throughput
3) API simples
4) Só usando para conectar a uma função Lambda
Quando e onde ocorre o erro “ProvisionedThroughputExceeded”? Como lidar com esse problema?
No Kinesis Data Streams quando enviamos mais MB ou mais Registros para o Shard do que ele aguente. Se isso ocorrer, você terá uma HOT PARTITION
Para lidar com o Problema, devemos:
1) colocar Retries in Backoff, se der o erro ele tenta denovo em alguns segundos e de novo e de novo e de novo etc.
2) Aumentar o numero de Shards
3) Escolher bem o nome das partições para o stream ficar bem distribuido
Desenvolvendo Aplicações Produtoras para o Kinesis Data Stream, tanto o SDK quanto o KPL podem criar aplicações Sincronas e Asincronas. V ou F?
FALSO. Apenas o KPL pode criar Asynchronous, que tem melhor performance do que o Sync, mas é Async
Tanto com o SDK quanto com KPL você consegue implementar compressão no stream. V ou F?
FALSO. Nenhum dos 2 faz isso. Se quiser, o usuário deve implementar a compressão por conta própria
No KPL, BATCHING tem 2 features habilitados por default.. Quais seus nomes e o que fazem?
Collection: WRITE para multiplos SHARDs simultaneamente usando a mesma PutRecords API call
Agregation: Ele consegue colocar multiples registros(mais de 1000) em 1 só registro, e aumentar o tamanho do Payload (mais de 1 MB), mas isso aumenta a latência.
Streams produzidos com o KPL podem ser decodificados pelo SDK. V ou F?
FALSO. Só pode ser decodificado usando KCL ou uma Special Helper Library
Quanto a BATCHING do KPL, quanto tempo por padrão ele espera para fazer o BATCH? Qual parametro mudamos para alterar caso necessário?
Espera 100ms, podemos mudar isso no RecordMaxBufferedTime
Que situação o KPL não é recomendado?
Se uma aplicação não puder tolerar nenhum atraso, o SDK provavelmente é o melhor indicado. Ex: Uma Aplicação de IoT, se o stream ficar Offline, o KPL vai acumular pacotes para enviar. Mas nesse caso só faz sentido ter o dado mais recente, então é melhor usar o SDK para mandar o dado do momento quando ele ficar online novamente
Kinesis Agent podem ser usados para pre-processar o dado. V ou F?
VERDADEIRO. Converter CSV to JSON, log to JSON… Lida muito bem com retry upon failures, file rotation e checkpoint
Sobre Kinesis Consume SDK, qual a call de API é realizada para pegar os registros no Shard? Quais suas caracteristicas?
GetRecords - conseguimos pegar até 10MB ou 10000 registros com 1 call, mas como isso excede o limite de SHARD, teremos que esperar 5 segundos para receber o máximo. E é possivel fazer 5 API Calls por SHARD p/ seg. 200ms de latência por call
Se uma aplicação cair, o KCL consegue saber onde parou e retomar. V ou F?
VERDADEIRO. Ele tem checkpointing e pode continuar de onde parou
Se você receber o erro “ExpiredIteratorException”, o que isso significa?
Signficia que seu KCL está mandando dados demais para o DynamoDB que está com uma quantidade subdimensionada de WCU.
Como e para que é usada a Kinesis Connector Library?
É instalado em uma instância EC2 e seu único propósito é receber stream diretamente do KD Stream e enviar para:
1) Redshift
2) S3
3) ElastichSearch
4) DynamoDB
Melhor usar Lambda ou Firehose para qualquer um desses casos. K Connector Library está em phase out
Podemos usar o Lambda para decodificar dados do KPL. V ou F?
VERDADEIRO. Lambda tem um Library que permite desagregar o dado do KPL
O que é o Kinesis Enhanced Fanout e como ele funciona? Qual o limite de usuários por SHARD?
É uma feature do KD Streams que passa a oferecer 2MB/s por usuário por SHARD. Os dados são PUSHED (usando HTTPS/2) e não PULLED do Shard como no método normal. A latência também é bem menor, 70ms por usuário. 5 usuários por SHARD, mas esse limite pode ser retirado contectando a AWS
Durante um processo de Shard Splitting, é possivel receber mensagens fora de ordem tanto com implementação via SDK quanto KCL. V ou F?
FALSO. o KCL já tem dentro dele um sistema para evitar esse tipo de ocorrencia.
Caso necessário, conseguimos ativar auto-scaling nativo dentro do KD Streams. V ou F?
FALSO. KD Stream não tem auto-scaling nativo, mas é possível implementar usando Lambda e call de API UpdateShardCount
Resharding (Merge ou Split) de múltiplos shards pode ser realizado em paralelo em até 1000 shards por vez. V ou F?
FALSO. O Resharding é feito em sequencia. Ex: Para dobrar o numero de Shards de 1000 para 2000, são necessário 30K segundos (8.3hs).
Em uma operação de Shard Splitting no KD Stream, quanto tempo aproximadamente leva para passar de 1000 Shards para 2000 shards?
30k Segundos (8.3hs)