legado com rest para modernizar seu criando uma ......legado rodrigo engenheiro de software na...

40
Evolução guiada por APIs Option #2 Criando uma arquitetura híbrida com REST para modernizar seu legado

Upload: others

Post on 22-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Evolução guiada por APIs Option #2Criando uma arquitetura híbrida com REST para modernizar seu legado

Page 2: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Rodrigo● Engenheiro de Software na CI&T.

● Atuou na criação da FIFA World

Cup 2014 Happiness Flag da Coca

Cola.

● Atua em vários sistemas da NSK.

Page 3: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Otoniel● Engenheiro de Software na CI&T.

● Participou da criação da FIFA World

Cup 2014 Happiness Flag.

● Certificado como Google Cloud

Developer em 2014.

● Com experiência em SOAP e REST,

atuou na NSK para conciliar as duas

tecnologias.

Page 4: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Como uma API REST pode ajudar na evolução de um

sistema legado?

Page 5: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

O que é REST?

Estilo arquitetural

HTTP

Simples

Rápido

JSONAPI’s

Page 6: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Contextualizando...

Page 7: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em
Page 8: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em
Page 9: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

O que são esses sistemas?

Page 10: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Aplicações Web

SOAP/JMS

ERP

Manufatura

B2B Etiquetagem

Financeiro

Portal de Vendas

Transportadoras

BIPlanejamento

Page 11: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Alguns númerosArquivos Linhas de Código

Java 17 mil 1,6 milhões

JSP 1 mil 173 mil

XML 117 36 mil

XSD 41 4 mil

Outros ... ...

Total 19 mil 1,9 milhões

Page 12: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Aplicação

Struts

Form Bean

ActionHTML

Page 13: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Struts e as dificuldades...

Page 14: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Exemplo: Salvar um form com listas

Page 15: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

<html:form action="/save" ><logic:iterate id="user" name="usersForm"

property="users" indexId="usrId"><logic:iterate id="role" name="user" property="roles" indexId="rleId">

<bean:message key="label.role.name"/>

<input type="text"name="users[${usrId}].roles[${roleId}].name" value="${role.name}"/>

</logic:iterate></logic:iterate>

</html:form>

Page 16: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

public class UsersForm extends ValidatorForm {

private String name;

private List<User> users = null;

public User getUsers(int index) {

if(this.users == null) { this.users = new ArrayList<User>();

}

while (this.users.size() <= index) { this.users.add(new User()); }

return (User) this.users.get(index);}

}

Page 17: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

public class UsersAction {

protected ActionForward open (final ActionMapping mapping ,final ActionForm form, final HttpServletRequest request ,final HttpServletResponse response )

throws Exception {UsersForm formEditNaAsn = (UsersForm) form;

for (User user : usersForm.getUsers ()) {

//Faz algo com o userfor (Role role : user.getRoles()) {

//Faz algo com a role}

}

return mapping.getInputForward();}

}}

Page 18: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Por que não eliminar o Struts?

Page 19: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

O que poderia resolver esses problemas?

Page 20: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em
Page 21: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Aplicação

Struts

Form Bean

Action

API REST

JSON

HTML

AngularJS

Page 22: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

API RESTStruts

AJAX

JSON

HTML

Requisição

Page 23: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Aplicação

Struts

Form Bean

Action

API REST

JSON

HTML

AngularJS

Action

public class LoginAction {

protected ActionForward open(final ActionMapping mapping ,final ActionForm form, final HttpServletRequest request ,final HttpServletResponse response )

throws Exception {return mapping.getInputForward();

}}

}

Page 24: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Aplicação

Struts

Form Bean

Action

API REST

JSON

HTML

AngularJS

<%@ taglib uri="/tags-html" prefix="html"%><%@ taglib uri="/tags-logic" prefix="logic"%>

<div ng-controller="loginController" ><html:form action="loginAction">

<div ng-repeat="role in roles"><span ng-bind=”role.name”></span>

</div>

</html:form>

<script src="js/loginController.js" ></script>HTML

Page 25: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Aplicação

Struts

Form Bean

ActionHTML

API REST

JSONAngularJS

module.controller('loginController' , function($scope, $http) {

$http({

method: 'GET', url: '/rs/login/roles, }).success(function(roles) { $scope.roles = roles; });});AngularJS

Page 26: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Aplicação

Struts

Form Bean

Action

API REST

JSON

HTML

AngularJS

@Path("/login")public class LoginResource {

@POST@Produces(MediaType.APPLICATION_JSON)@Path("/login")public LoginResponse login (LoginRequest loginRequest) {

return authenticator.login(loginRequest);}

@GET@Produces(MediaType.APPLICATION_JSON)public Role list() {

return authenticator.roles();}

}

API REST

Page 27: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Minimizamos as dificuldades!

Page 28: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

REST x SOAP

Page 29: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Exemplo de mensagem SOAP

<?xml version="1.0"?><soap:Envelope

xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:u="http://www.qconexample.com/user"> <u:User> <u:name>Otoniel</u:name> </u:User> </soap:Body>

</soap:Envelope>

Page 30: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

GET /users/otoniel{ "id" : 1, "name" : "Otoniel", "roles" : [ { "name" : "admin" } ]}

POST /users/otoniel{ "name" : "Otoniel da Silva", "roles" : [ { "name" : "admin" } ]}

PUT /users/otoniel{ "id" : 1, "name" : "Otoniel da Silva", "roles" : [ { "name" : "admin" } ]}

DELETE /users/otoniel{ "id" : 1}

Page 31: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

BackendSPA

Novas possibilidades!

HTML JSONAPI RESTful

Page 32: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

REST também nos levou a criar uma API de registro

de eventos! :)

Page 33: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

HTTP RequestPOST /events/create

{

"uid" : "dd8947f3-bc47-4a54-8bae-99758a710a23",

"userId" : "OTONIEL",

"dateTime" : "1335205592410",

"eventName" : "send_xml_to_ftp",

"message" : "<xml>...</xml>",

}

Logs da Aplicação

...

2015-03-18 17:21:20,222

[dd8947f3-bc47-4a54-8bae-99758a710a23]

INFO [SendXmlToFtpService: 72]: Sending file: new.xml

Page 34: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Manufatura

B2B

Portal de Vendas

Mobile

Browser

Log de Eventos

Page 35: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Então vale a pena usar uma API REST?

Page 36: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

● Facilitar o uso de frameworks MVC JavaScript.

● Mais fácil de expor serviços.● Produtivo e melhora a qualidade de

código.● Novidade tecnológica para os

desenvolvedores. :)

Benefícios

Page 37: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

● Múltiplas tecnologias convivendo.● Sistema muito grande e com alto valor

para o cliente.● Possibilidade de alguma falha na

modernização e impactar a entrega de novas funcionalidades.

Riscos

Page 38: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Sim, vale a pena! ;)

Page 39: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Perguntas?

Page 40: legado com REST para modernizar seu Criando uma ......legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da Coca Cola. Atua em

Obrigado!

Otoniel da Silvaemail: [email protected]: @otonielsilva

Rodrigo Silvaemail: [email protected]

Twitter: @rbsilvati