Skip to content

Instantly share code, notes, and snippets.

@jeffotoni
Created May 18, 2021 13:43
Show Gist options
  • Save jeffotoni/8b56fe678859ccc975d24ce5305771d6 to your computer and use it in GitHub Desktop.
Save jeffotoni/8b56fe678859ccc975d24ce5305771d6 to your computer and use it in GitHub Desktop.
Mafê
Jefferson Otoni (via zoom) e Raphael Rossi (presencial)
zoom
https://us02web.zoom.us/j/89048168371
Princípio:
API é um conjunto de definições e protocolos usado no desenvolvimento e na integração de software de aplicações.
API (Application Programming Interface) é um acrônimo em inglês.
Conceito:
O conceito de API nada mais é do que uma forma de comunicação entre sistemas.
Elas permitem a integração entre dois sistemas, em que um deles fornece
informações e serviços que podem ser utilizados pelo outro, sem a necessidade
do sistema que consome a API conhecer detalhes de implementação do software.
Tipos de Web Services:
REST
SOAP
XML-RPC
Concepções rEST
Resources = /insert, /update , /search [URI]
Representation = Html, Json, Xml, ... / Content-Type
State Transfer = GET, POST, PUT ...
O que seria APIs?
Gravação 2 - API - Princípios, conceitos e como criar
Poderia citar alguns tipos de Web Service?
Gravação 2 - API - Princípios, conceitos e como criar
E o protocolo HTTP tem como desmistificar um pouco ele?
Gravação 2 - API - Princípios, conceitos e como criar
RESTful vs REST (Representational State Transfer) o que seria?
Gravação 2 - API - Princípios, conceitos e como criar
O que são APIs poliglotas?
Gravação 2 - API - Princípios, conceitos e como criar
O que são API management e API-GATEWAY ou é tudo igual?
Gravação 2 - API - Princípios, conceitos e como criar
Existe algum órgão para regulamentar a criação de APIs Web?
Gravação 2 - API - Princípios, conceitos e como criar
Como acredita que será a evolução quando o assunto é API Web?
Gravação 2 - API - Princípios, conceitos e como criar
Como é a rotina de vocês na Engineering?
Gravação 2 - API - Princípios, conceitos e como criar
No geral, como enxerga o mercado de tecnologia atualmente?
IoT, machine learning, inteligencia artificial, Visão Computacional
Gravação 2 - API - Princípios, conceitos e como criar
HISTORIA
[https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Overview]
A origem do HTTP
O HTTP surgiu dos esforços coordenados pelo World Wide Web Consortium, que culminaram na publicação de artigos sobre o protocolo com um pedido para que a comunidade internacional avaliasse se ele poderia se tornar um padrão em todo o mundo. Assim nasceu, em 1999, o HTTP/1.1, para suprir a necessidade de distribuir de forma padronizada informações que vão além de simples textos, entre clientes e servidores, por todos os computadores ligados à internet.
Projetado no início da década de 1990, o protocolo HTTP é extensível e evoluiu ao longo do tempo. Atua na camada de aplicação e é enviado sobre o protocoloTCP, ou em uma conexão TCP criptografada com TLS, embora qualquer protocolo de transporte confiável possa, teoricamente, ser usado. Devido à sua extensibilidade, ele é usado não só para buscar documentos de hipertexto, mas também imagens e vídeos ou publicar conteúdo em servidores, como nos resultados de formulário HTML (veja os elementos <html> e <form>). O HTTP também pode ser usado para buscar partes de documentos para atualizar páginas da Web sob demanda.
[https://go-talks.appspot.com/github.com/gobelohorizonte/gotalks/server-rest.slide#26]
2015 foi lançado o HTTP/2
[https://developers.google.com/web/fundamentals/performance/http2#:~:text=The%20primary%20goals%20for%20HTTP,request%20prioritization%20and%20server%20push.&text=HTTP%2F2%20does%20not%20modify,of%20HTTP%20in%20any%20way.]
- Março de 2012: Chamada para propostas de HTTP/2
- Novembro de 2012: Primeiro rascunho do HTTP/2 (baseado no SPDY)
- Agosto de 2014: Publicação do rascunho 17 do HTTP/2 e do rascunho 12 do HPACK
- Agosto de 2014: Última chamada do Grupo de Trabalho para o HTTP/2
- Fevereiro de 2015: IESG aprova os rascunho do HTTP/2 e do HPACK
- Maio de 2015: O RFC 7540 (HTTP/2) e o RFC 7541 (HPACK) são publicados
[https://hpbn.co/http2/]
[https://www.redhat.com/pt-br/topics/api/what-are-application-programming-interfaces]
Um breve histórico das APIs
As APIs surgiram nos primeiros dias da computação, muito antes do computador pessoal. Naquela época, elas eram normalmente usadas como bibliotecas para sistemas operacionais. Embora a API enviasse mensagens entre mainframes em alguns momentos, ela era quase sempre local para os sistemas em que operava. Depois de quase 30 anos, as APIs se expandiram para além dos ambientes locais. No início dos anos 2000, elas estavam se tornando uma tecnologia importante para a integração remota de dados.
Openapis
https://spec.openapis.org/oas/v3.1.0
Lançamento 10 de agosto de 2011
A OpenAPI Initiative (OAI) foi criada por um consórcio de especialistas da indústria voltados para o futuro que reconhecem o imenso valor da padronização sobre como as APIs são descritas.
Como uma estrutura de governança aberta sob a Linux Foundation,
a OAI está focada na criação, evolução e promoção de um formato de descrição neutro do fornecedor.
A especificação OpenAPI foi originalmente baseada na especificação Swagger, doada pela SmartBear Software.
A especificação OpenAPI (OAS) define
uma descrição de interface agnóstica de linguagem de programação padrão para APIs REST,
que permite que humanos e computadores descubram e entendam os recursos de um serviço
sem exigir acesso ao código-fonte, documentação adicional ou inspeção do tráfego de rede .
Quando definido corretamente por meio do OpenAPI, um consumidor pode entender
e interagir com o serviço remoto com uma quantidade mínima de lógica de implementação.
Semelhante ao que as descrições de interface fizeram para a programação
de nível inferior, a especificação OpenAPI remove as suposições ao chamar um serviço.
----- microserivces
O uso de APIs RESTful permite – e até estimula – a entrega mais rápida
de novos recursos e atualizações. Cada serviço é independente.
Um serviço pode ser substituído, aprimorado ou descartado sem afetar nenhum outro na arquitetura.
Com essa arquitetura leve, é possível otimizar os serviços distribuídos ou de cloud
e oferecer suporte à escalabilidade dinâmica para serviços individuais.
APIs remotas
As APIs remotas foram projetadas para interagir por meio de uma rede de comunicações. Quando falamos “remota”, queremos dizer que os recursos manipulados pela API estão em algum lugar fora do computador que faz a solicitação. Como a rede de comunicações mais usada é a Internet, a maioria das APIs são projetadas com base em padrões da web. Nem todas as APIs remotas são web, mas é justo afirmar que, em geral, as APIs web são remotas.
As APIs web normalmente usam o protocolo HTTP para mensagens de solicitação e fornecem uma definição da estrutura das mensagens de resposta. Essas mensagens de resposta geralmente têm o formato de arquivo XML ou JSON. Tanto XML quanto JSON são formatos de preferência porque apresentam os dados de forma simplificada, o que facilita a manipulação por outras aplicações.
consideradas RESTful se estiverem em conformidade com seis restrições de arquitetura:
- Arquitetura cliente-servidor
- Sem monitoração de estado
- Capacidade de cache
- Sistema em camadas
- Código sob demanda (opcional):
- Interface uniforme
[https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm]
Oficialmente o termo API RESTful apareceu pela primeira vez na
tese de doutorado de "Roy Fieldings" chamada de
“Architectural Styles and the Design of Network-based Software Architectures​“,
publicada em 2000 pela Universidade da Califórnia.
Ali foram descritos os primeiros conceitos sobre APIRESTful e muitos são utilizados até hoje.
PINHONEIROS
Salesforce e o primeiro caso real de sucesso
Porém, na prática, o nascimento da API foi durante o evento IDG Demo 2000, quando o Salesforce, software de CRM, lançou sua primeira API em 7 de Fevereiro de 2000 feita em XML.
eBay Developer Program
Pouco mais tarde, em 20 de Novembro de 2000, o eBay lançou sua API. Com o famoso “​eBayDeveloper Program​”, trouxeram a tecnologia das APIs para o segmento de e-commerce, revolucionando todo o mercado.
Amazon Web Services
Um pouco depois, em 16 de Julho de 2002, a Amazon também lançou sua API que permitiu a outros desenvolvedores adicionarem conteúdo e funcionalidades da Amazon em seus próprios sites.
Em Agosto de 2004, seis meses após o lançamento da plataforma,
a API do Flickr era liberada.
O lançamento da sua API fez com que o Flickr crescesse rapidamente, consolidando a empresa como a plataforma preferida pelos blogueiros da época. Esse ritmo de crescimento acelerado abriu os olhos do mercado para o que estava acontecendo e, menos de um ano pós o lançamento da API, o Flickr foi adquirido pelo Yahoo por algo em torno de 25 milhões de dólares.
Amazon S3 e a revolução na infraestrutura das empresas
Em março de 2006 algo aconteceu. A Amazon apresentava ao mundo sua API focada no armazenamento de dados, o Amazon S3 e, seis meses depois lançou o Amazon EC2, permitindo que toda a infraestrutura de uma empresa de tecnologia pudesse ser criada via API.
Tipos de Web Services / http/https {json/xml}
REST / Framework Mux
SOAP / framework {wsdl2Go , Soaptrip}
XML-RPC / XmlRpc
REST (Representational State Transfer)
Concepções Rest
Resources = /insert, /update , /search [URI]
Representation = Html, Json, Xml, ... / Content-Type
State Transfer = GET, POST, PUT ...
O que é REST API?
Antes de irmos direto ao assunto, vamos primeiro entender o que é REST. Ao contrário da crença de muitos, REST não é um protocolo, uma ferramenta ou biblioteca,
mas sim um estilo arquitetônico de serviço web que fornece um canal de comunicação entre sistemas ou computadores na internet. É um padrão utilizado como meio de arquitetura para projetar um sistema de software baseado em rede.
Portanto, uma API REST é uma interface de programa de aplicativo que é apoiada pelo estilo arquitetônico de REST. Refere-se a ferramentas, serviço ou software que se baseia no princípio de arquitetura REST. Embora REST possa ser usado em quase qualquer protocolo, eles aproveitam o HTTP quando usados para APIs da web. A principal vantagem das APIs REST é que elas oferecem mais flexibilidade. Em APIs REST, os dados não são restritos a recursos ou métodos. Portanto, ele pode fazer vários tipos de chamadas, retornar vários formatos de dados e até mesmo mudar estruturalmente com a implementação adequada de hipermídia.
O que é um DevOps Engineer?
Como é o trabalho de um DevOps Engineer na Eng?
Qual conselho você daria para alguém que quer começar e precisa saber "por onde"?
Quais é a stack de ferramentas que um DevOps Engineer precisa conhecer?
Basta ser fera em ferramentas ou precisa também de algum soft skill?
Um DevOps precisa ter conhecimentos avançados em desenvolvimento de software?
e para fechar, qual as perspectivas que vocês tem para a área de DevOps ao longo dos próximos anos?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment