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)
Uma aplicação escrita com KPL envia um registro para o KD Streams, mas por questões de rede o ACK nunca chega a aplicação Produtora. Nesse caso, a aplicação produtora envia uma segunda vez o arquivo e recebe o ACK. Mas dentro do KD Streams, existem 2 registros com o mesmo dado, mas com chaves diferentes de registro. Como evitar isso?
Criar no código um mecanismo para encapsular no dado um ID único que permita a deduplicação
Em que caso pode haver duplicação na leitura de registros no lado do Consumer? Como lidar com isso?
Quando a aplicação de Consumo performa um RETRY, ela pode ler o dado duplicado.
1) A worker terminate unexpectedly
2) Worker instances are added or removed
3) Shards are merged or split
4) The Application is deployed
Para lidar com isso, é necessário lidar do lado da App. Ou faz aplicação idempotente ou que ela seja capaz de identificar dados repetidos como um ID único em cada registro por exemplo
Como o KD Firehose consegue copiar dados para dentro do Redshift?
Ele coloca os dados primeiro no S3 e depois envia um comando de COPY para o Redshift
Quais são os serviços AWS para onde o KD Firehose consegue enviar os dados? (Qual aquele 1 serviço Third Party muito importante também)?
Redshift, S3 e Elasticsearch. E o Third Party é o SPLUNK
É possivel enviar dados do KD Firehose para um destino customizado usando… o que?
Uma API call em um HTTP Endpoint
Quais os principais serviços AWS que são fonte para o KD Firehose?
KD Streams, CloudWatch e AWS IoT
O que acontece com registros que por ventura venha a falhar o processamento ou transformação no KD Firehose?
São enviados para um bucket no S3
KD Firehose é NEAR-REAL TIME. Qual a latência MINIMA para Batchs que não estejam FULL?
60s
KD Firehose pode escalar on-demand via API call. V ou F?
FALSO. Ele escala automaticamente.
KD Firehose pode fazer conversão de formatos de arquivo de JSON para Parquet/ORC. V ou F?
VERDADEIRO, mas apenas para S3. Caso queira fazer transformação de um CSV para JSON, terá que usar Lambda.
Quais compressões KD Firehose suporte para S3? E para Redshift?
GZIP, ZIP e SNAPPY no S3
Apenas GZIP no Redshift
Dados vindos do KD Firehose podem ser lidos por Spark ou KCL. V ou F?
FALSO. KCL e Spark só podem ler dados do KD Streams
Quais são os limites de FLUSH de um BATCH para KD Firehose?
Podemos configurar por Buffer Size ou Buffer Time Limit. O Limite mínimo do Buffer Time é de 60s e do Buffer Size, “Poucos mega”
Por quanto tempo um arquivo pode ficar no KD Streams? E no KD Firehose?
de 1 a 365 dias. Firehose não possui storage.
Para quais serviços CloudWatch consegue mandar seu stream de logs? Qual Library usamos para isso?
KD Streams, KD Firehose e Lambda. AWS CLI é a usada para ativar essa feature. (Para enviar para o Elastica Search, apenas via Lambda ou Firehose, sembrando que KD Firehose é NEAR-REAL TIME)
Qual o limite de tempo que uma mensagem pode ficar retida aguarando ser retirada no SQS?
4 dias Default, maximo 14 dias
Qual o tamanho máximo das mensagems que pode ser alimentadas no SQS?
256kb por mensagem
Qual a principal diferença entre SQS e KD Firehose ou KD Streams?
Uma vez que uma mensagem do SQS é processada, ela é deletada. Mas tem a menor latência de todas (10ms)
Qual o tamanho máximo de um Objeto no KD Streams, KD Firehose e no SQS?
1MB, 128MB, 256kb
O que é, e que serviços podem ser Source do DMS?
Bancos On-Premise, Azure SQL DB, Amazon RDS e S3
O que é e para que serve o AWS SCT?
AWS Schema Conversion Tool é usado para converter um DB em um Engine diferente. De SQL para Oracle. Se forem Iguais os Engines, NÃO É NECESSÁRIO
O que é o DX e para que ele serve?
Direct Connect - É uma conexão dedicada entre uma localização remota e a sua VPC. É necessário colocar um Virtual Private Gateway. Leva no mínimo 1 mês para implementar esse tipo de conexão
Quais os tipos de conexão e qual o tamanho de Banda possivel do Direct Connect?
Dedicated Connection: 1 GBps, 10GBps, 100GBps; Hosted Connection: 50Mbps, 500Mbps to 10Gbps
Qual o tempo mínimo de implementação de um Direct Connect?
1 Mês
Caso o exame solicite Resiliencia no Direct Connect, o que devemos fazer? E se ele requisitar MÁXIMA resiliencia?
1) Criar 2 DX partindo de diferentes DCs on-prem passando cada um pelo seu AWS Direct Connect Endpoint até a VPC.
2) Criar 4 DX, 2 para cada DC, cada um dos 4 passando pela sua própria AWS Direct Connection Endpoint.
Da Familia Snow, quais são os usandos para Data Migration e quais os usados para Edge Computing?
Snow mobile usado apenas para Data Migration.
Snow Edge e Snowcone, usados para DM e Edge Compute
Via de regra, a partir de quanto tempo de migração, devemos considerar o Snowball Family?
Mais de 1 semana de migração
O que é o AWS MSK?
AWS Managed Streaming Kafka
Em que caso devemos usar MS Kafka e não AWS Kinesis?
Kafka pode receber até 10Mb de Payload e Kinesis só até 1Mb. Ele também é bem mais configuravel do que o Kinesis.
O que é um Zookeper? O que é um Broker?
O Zookeeper é usado pela MSK Managed Streaming Kafka para gerenciar o fluxo de dados. Apenas 1 por AZ é necessário.
Broker é quem vai entregar o dado a aplicação final
Quais cryptografias estão disponiveis para MSK?
TLS entre os Brokers e KMS at Rest no EBS do cluster
IMPORTANTE : Quais os tipos de autenticação e autorização usados pelo MSK?
1) Authorize specific groups for access your Kafka clients.
2) Mutual TLS + Kafka ACLs
3) SASL/SCRAM + Kafka ACLs
4) IAM Access Control (AuthN + AuthZ)
IMPORTANTE: Kafka ACLs NÃO são gerenciados pelo IAM policies. São gerenciados de dentro do Cluster Kafka
Para uso de segurança, Kafka ACLs podem ser gerenciados por IAM policies. V ou F?
FALSO. Kafka ACLs são gerenciados de dentro do cluster Kafka
O faz o Prometheus junto do MSK?
Usado para monitorar. Se conecta e exporta as métricas de cluster, broker e topics
Para que serve o MSK Connector?
Para colocar dados no S3, Redshift, Elastisearch entre outros.