Linha 95: Linha 95:


<p>São revistas as seguintes dimensões:</p>
<p>São revistas as seguintes dimensões:</p>
- Excelência operacional: A operação pode ser simplificada, automatizada, reduzir o risco de erros?</p>
<p>- Excelência operacional: A operação pode ser simplificada, automatizada, reduzir o risco de erros?</p>
- Segurança: A segurança implementada é satisfatória?</p>
<p>- Segurança: A segurança implementada é satisfatória?</p>
- Confiabilidade: Posso confiar nesse sistema? Podemos melhorar a confiabilidade?</p>
<p>- Confiabilidade: Posso confiar nesse sistema? Podemos melhorar a confiabilidade?</p>
- Desempenho: Podemos melhorar o desempenho do sistema, sem piorar as demais dimensões?</p>
<p>- Desempenho: Podemos melhorar o desempenho do sistema, sem piorar as demais dimensões?</p>
- Custo: Podemos fazer com que o cliente gaste menos para fazer o mesmo?</p>
<p>- Custo: Podemos fazer com que o cliente gaste menos para fazer o mesmo?</p>
<br>
<br>
Mais detalhes aqui: https://aws.amazon.com/architecture/well-architected/
Mais detalhes aqui: https://aws.amazon.com/architecture/well-architected/

Edição das 03h46min de 23 de outubro de 2019

Evolução na profissão

A carreira de programação de Fabian começou muito antes dele decidir se tornar um arquiteto de soluções. Antes de entrar na faculdade, durante o perídodo da febre dos computadores nos anos 90, ele se envolveu em cursos de programação à distância pelo correio, o que o ajudou quando entrou para a engenharia.

Ele fez um curso de Cobol na época, e, ao ficar em primeiro lugar no curso, conseguiu um estágio dando aulas de Cobol em uma empresa. Foi a primeira experiência de Fabian com ganhar dinheiro por meio da tecnologia. Ele depois conseguiu um estágio oficial na CDL (Câmara de Diligentes Lojistas), onde ele começou a obter um reconhecimento profissional e teve suas primeiras experiências com elaboração de sistemas.

Quando foi fazer seu mestrado, Fabian começou a trabalhar como consultor na área de análise de sistemas. Envolveu-se em projetos de downsizing e implementação de serviços para a automação de lojas. Ele também deu aulas em várias instituições (como UFU, Unitri e FIAP) sobre diversos tópicos, o que certamente o auxiliou a entender sobre as novidades do mercado e sobre o que ele necessita.

Depois de trabalhar em várias empresas e instituições, ele virou consultor no Banco Bradesco, onde trabalhou no desenvolvimento de vários serviços e auxiliou na seção de consultoria. Posteriormente, ele recebeu uma oferta para trabalhar na SCOPUS, onde, como funcionário, cuidava das áreas de "Ethical Hacking", da qualidade e de desenvolvimento de produtos, entre outras. Lá ele desenvolveu várias tecnologias para bancos, e criou sua primeira patente na área de segurança.

Em 2016, ele fez um processo seletivo da Amazon que afirmou sua posição como "Arquiteto de Soluções". Nesta nova profissão, ele começou a exercer papéis muito mais no desenvolvimeto de arquiteturas para a infrastrutura do que no de arquiteturas para software (ou seja, começou a trabalhar mais com bancos de dados e servidores do que os softwares que os utilizam). Ele trabalhou com várias parceiras da Amazon para desenvolver as soluções que elas usariam e aplicariam em seus serviços. Ele se mudou recentemente para Nova York, para trabalhar na mesma posição.

Descrição da atividade atual

Fabian atualmente trabalha na Amazon Web Services. Ele recebe projetos, principalmente das empresas parceiras da Amazon, para produção de soluções para problemas que elas possuem, que podem partir desde servidores para os funcionários acessarem mais rápido a informação à redes de bancos de dados para o manuseio de informação entre franquias. Ele é responsável pela consulta com os clientes, a projeção dos gastos e (notavelmente na Amazon) por parte do desenvolvimento da própria solução.

Em geral, o processo ocorre da seguinte forma: ele se encontra com o cliente antes da venda do produto, avalia os pré-requisitos e elabora a estrutura da solução que será dada ao cliente. Há outros times que de fato montam as soluções, mas o arquiteto também trabalha na montagem e implementação da arquitetura (serviços gerais). O arquiteto também ajuda a otimizar e reduzir os gastos da implementação com o tempo ("arquiteture review").

Nessa profissão, programa-se em várias linguagens, como Java, Python, Javascript, Scala, ou frameworks variadas (React.js, etc.). O profissional também deve mostrar ao cliente os serviços que serão usados, os custos, as limitações, e as possibilidades de crescimento.

Requisitos mínimos para exercer a profissão

Por mais que as empresas (como a Amazon) não requerem faculdade explicitamente, é necessário saber os fundamentos de vários dos serviços necessários na construção de soluções, como fundamentos de rede, banco de dados, Cloud Computing, sistemas distribuídos, storage, etc. Um arquiteto de soluções que não conhece o funcionamento das ferramentas que usará para projetar suas soluções não será capaz de produzir um resultado muito bom.

Além disso, é necessário conhecimento da língua inglesa.

Ferramentas usadas no dia-a-dia

No caso de Fabian, ele faz uso das plataformas da Amazon (?) para fazer o manuseio de negócios e a própria construção da arquitetura. Na área da programação, ele tende a usar linguagens como Python e Java, em IDEs como Cloud9 e Visual Studio Code.

Normalmente, as ferramentas usadas vão defender do que a solução exigir: caso a solução exija, ele usa IA e as ferramentas envolvidas; caso ele vá trabalhar com algo intenso em termos de processamento, eles utilizam GPUs, e assim por diante. A Amazon oferece diversas ferramentas, extendendo de analítica até VR e AR, as quais podem ser encontradas no site da AWS (Amazon Web Services).

Tecnologias envolvidas

No caso do Arquiteto de Soluções, tecnologias de quase todas as áreas podem ser usadas para alcançar a solução desejada. Por isso, o arquiteto deve ter um conhecimento pelo menos decente de todas as ferramentas à disposição dele para atuar.

No caso de Fabian, a maioria das ferramentas estão disponibilizadas por meio de serviços da Amazon Web Services. Ele aplica, principalmente, as tecnologias de banco de dados e de Cloud Computing em grande parte de seus trabalhos.

Em BDs (Bancos de Dados), Fabian principalmente analisa qual tipo de Banco de Dados ele deve utilizar para garantir o melhor resultado (entre BDs relacionais ou não relacionais), além de projetar maneiras de como acessar, modificar informação ou checar o estado de cada uma das máquinas físicas por meio dos serviços/ferramentas que ele disponibilizará para o cliente. Ele normalmente esquematiza a interação entre esses diversos serviços, sempre considerando como fazer com que a interação seja a mais eficiente possível. Isso exige um bom conhecimento do funcionamento de bancos de dados, desde as linguagens usadas até o funcionamento de cada tipo de BD e suas implementações.

Em Cloud Computing, Fabian deve, de forma similar, projetar os serviços que conectarão o cliente (usuário) com a nuvem, buscando montar um sistema simples e eficiente. Ele também deve verificar quais computadores disponíveis seriam mais efetivos para atender às necessidades do cliente, e, então, montar a rede que os conectarão ao sistema da nuvem elaborada para o cliente. Isso envolve um bom conhecimento sobre como funcionam redes de computadores, além da necessidade de estudar as condições do cliente quanto à conexão a rede e determinar se essa é o suficiente para manter o sistema funcionando suavemente.

Ética profissional

É necessário, para um arquiteto de soluções, ser capaz de adquirir a confiança do cliente, mantendo a honestidade e evitando fazer papo de vendedor e criar informação.

O principal exemplo seria na entrevista de planejamento com o cliente. Pensar sempre em como você gostaria de ser tratado como consumidor também é importante, uma vez que, dessa forma, você é capaz de entender melhor o cliente e ser mais respeitoso com ele. Além disso, fazer papo de vendedor e supor informações sobre as quais você não tem certeza não resulta em nada além da criação de expectativas errôneas ou inatingíveis no consumidor.

Esse método de agir é quase que exigido pela Amazon, mesmo não é tão comum em outras empresas. Para a Amazon, é dada muita atenção para como o cliente é tratado.

Exemplo de resultado tangível

Quando Fabian trabalhou no Banco Bradesco, ele ajudou a desenvolver um produto para eliminar a necessidade do uso de usuários e senhas sem prejudicar muito a segurança. Por meio de um sistema de "assinatura" de transação, o usuário pode acessar a informação sobre transações específicas com um código associado a cada uma, evitando que o usuário tenha a necessidade de guardar dezenas de senhas.

Fabian também tem orgulho de ter feito o primeiro sistema de automatização de loja em Uberlândia, na loja de artigos domésticos Ritz, no início do ano 2000. Ele funcionava por meio de terminais para auxiliar os lojistas nas transações, evitando transtornos na hora da venda.

Upload da apresentação


Dúvidas


  • 01. O que é RAID? Por que as variações de 1 a 5?

RAID é uma sigla para "Matriz Redundante de Discos Independentes", e consiste em combinar 2 ou mais discos (Discos Rígidos ou SSDs) para formar uma única unidade lógica de armazenamento. Em outras palavras o RAID faz com que o sistema operacional enxergue essa matriz de discos como uma única unidade de armazenamento. Essa combinação de disco pode ser feita por software ou por hardware, e nos possibilita obter recursos como alta tolerância a falhas, aumento de desempenho e ganho de espaço de armazenamento.

Cada variação de RAID determina uma maneira diferente que foi desenvolvida para combinar discos, com cada versão tendo benefícios e desvantagens em relações às outras em termos de eficiência e usabilidade. O RAID 0, por exemplo, denominado como "striping", subdivide um disco rígido em uma array de blocos de mesmo tamanho (aumentando o desempenho), enquanto o RAID 1, denominado como "mirroring", escreve todo dado em dois discos diferentes, evitando perda de informação no caso de falha de um deles.

  • 02. O que é um downsizing?


Downsizing é um termo que descreve a migração de um sistema de uma plataforma cara (como mainframes) para plataformas mais baratas e modernas (como sistemas virtualizados).

Um termo semelhante é Rightsizing, que consiste em especificar uma infraestrutura que encaixa perfeitamente os requisitos do ambiente.

  • 03. O que faz o Arquiteto de Soluções? Ele faz a mesma coisa em qualquer empresa?


O Arquiteto de Soluções é responsável por entender os requisitos do cliente com respeito a algum sistema ou algum ambiente (por exemplo, um departamento de Data Science), e especificar a arquitetura da solução que vai resolver os problemas do cliente.

Nem sempre o perfil é o mesmo em todas as empresas. Em algumas empresas o Arquiteto de Solução é mais um perfil de pré-vendas, que trabalha com o time comercial da empresa para ajudar a entender o que o cliente precisa e ajudar na seleção das tecnologias, não atuando na implementação. Na Amazon, o Arquiteto de Solução é responsável pela especificação, precificação, implementação, e resolução de problemas na arquitetura implementada.

  • 04. Para que serve o Docker?


O Docker serve para "empacotar" um aplicativo ou sistema, permitindo que ele seja implementado em qualquer outro servidor ou SO, desde que estes tenham Docker instalado. Isso elimina o esforço e o tempo de ter que portar todos os componentes para o novo ambiente onde o serviço será executado, uma vez que o ambiente será sempre o mesmo (o ambiente que o Docker criou no empacotamento).

  • 05. O que é CDN?

CDN é abreviação de Content Delivery Network (ou Rede de Distribuição de Conteúdo). É uma rede de servidores (pontos de presença) que armazenam réplicas do conteúdo de outros sites na memória (cache) e depois os entrega aos visitantes, baseando-se na localização geográfica para conectá-los ao servidor mais próximo e mais rápido, reduzindo o tempo de transferência dos dados (latência). Isso permite que sites pesados possam ser acessados pelos clientes de forma mais rápida e eficiente.

  • 06. Quais itens normalmente são vistos numa revisão na implementação do cliente? Qual é a meta?


A meta é garantir que o cliente tem a melhor arquitetura possível, considerando a tecnologia disponível e restrições de requisitos e do negócio.

São revistas as seguintes dimensões:

- Excelência operacional: A operação pode ser simplificada, automatizada, reduzir o risco de erros?

- Segurança: A segurança implementada é satisfatória?

- Confiabilidade: Posso confiar nesse sistema? Podemos melhorar a confiabilidade?

- Desempenho: Podemos melhorar o desempenho do sistema, sem piorar as demais dimensões?

- Custo: Podemos fazer com que o cliente gaste menos para fazer o mesmo?


Mais detalhes aqui: https://aws.amazon.com/architecture/well-architected/

  • 07. Scala, que linguagem é essa? É promissora? Por quê?


Scala é uma linguagem de programação que se diz ser multiparadigma, combinando tanto características de orientação à objetos e programação funcional. Ela utiliza tipagem estática, e pode ser integrada diretamente no JVM (Java Virtual Machine), permitindo que ela seja usada ao mesmo tempo que JavaScript. Essa integração "seamless" com JS pode torná-la promissora para uso na Web.

Para Fabian, ela possui vantagens sobre Java, principalmente por ser do paradigma funcional e menos verbosa.

  • 08. O que é um ServerLess?


Serverless é uma arquitetura de nuvem usada pela Amazon Web Services na qual as responsabilidades de servidores do cliente começam a ser manuseadas pela Amazon. Os servidores passam a ser hosteados pela própria Amazon, e todas as operações de back-end são organizadas e mantidas pela AWS, enquanto o cliente pode focar apenas em desenvolver ou usar as ferramentas que necessitam dos servidores sem preocupação.
Mais informações: https://aws.amazon.com/pt/serverless/

  • 09. O que é escalabilidade? Dê um exemplo.


Você tem uma arquitetura que precisa de 1 servidor para conseguir atender até 100 usuários simultâneos. Quando você tem uma carga de 80% (80 usuários), pode ser interessante adicionar mais um servidor, por que num pico de demanda, se você chegar a mais de 100 usuários, só 1 servidor não vai aguentar.

Da mesma forma, quando você baixar para menos de 80 usuários, não faz mais sentido ter aquele segundo servidor, e ele deve ser removido.

Escalabilidade é a habilidade de adicionar e remover poder computacional de um ambiente de acordo com a demanda.

Existem dois tipos de escalabilidade: vertical, que é colocar mais CPU, memória, ou disco em um servidor existente para atender a mais demanda, e escalabilidade horizontal, que consiste em usar colocar mais máquinas pequenas para compor um grupo de servidores que entregam um certo poder computacional.

A escalabilidade deve ser automatizada para ser eficaz.

  • 10. Qual a diferença entre um BD Relacional e Não-Relacional?


Um banco de dados relacional se baseia na ideia que todos os dados estão guardados em tabelas, permitindo acesso, modificação e controle das informações armazenadas nelas por meio da linguagem SQL, o que permite um acesso mais rigoroso e seguro (no sentido de que impede inconsistência entre as informações) mas dificulta na área da escalabilidade e particionamento da informação (por causa da grande quantidade de tabelas mantidas).

Um banco de dados não-relacional, por outro lado, é muito mais eficiente pois todas as informações ficam agrupadas em um único registro. Por meio da linguagem NoSQL (ou várias outras como MongoDB e Membase), os dados podem ser distribuídos com uma facilidade maior que no outro tipo, mas com isso é perdido o grau de rigor e consistência que se obtêm com o SQL próprio. Nesse sentido, a consistência de dados em BDs não-relacionais não é fácil de ser mantida, uma vez que elas não tem as mesmas ferramentas de manuseio que o SQL dispõe.

BDs não-relacionais tendem a ser usadas em projetos onde há uma grande quantidade de solicitações / informações sendo passadas, uma vez que sua eficiência evita que os servidores fiquem muito tempo não disponíveis.
Mais informações: https://pt.slideshare.net/alexculpado/jose-alexandrerdbm-sxnosql