Projeto prático para o processo seletivo para Acme Coorp usando a especificação do e-Arq como base. Usando core do projeto conceito Projeto MEAN (MongoDB, Express, AngularJS e NodeJS) para reutilização de soluções coesas. E buscando atender as restrições do teste em si: DESAFIO Acme Coorp.
Objetivos Principais Conceitos:
- Criar uma sistema usando as tecnologias: MongoDB, Express, AngularJS, and Node.js;
- Usar um ambiente Plataform as a Service - PaaS;
- Jenkins - Integração Contínua;
- Projetar Sistemas usando Arquiterura Microservices;
- Implantação Contínua (Continuous Deployment);
- Experiência em sistemas de banco de dados NoSQL (Cassandra, MongoDB, etc.);
- Experiência em sistemas usando tecnologia não bloqueante Node.js;
- Experiência em sistemas usando Express;
- Experiência em sistemas usando AngularJS;
- Experiência em sistemas de containerização (e.g. Docker);
- Experiência em sistemas Linux e shell scripting;
- Experiência em sistemas Amazon Web Services - AWS;
- Experiência em projetos utilizando micro serviços (Microservices) e computação distribuída;
Considerando que temos uma instância do Amazon Machine Image - AMI iniciada: aqui AWS EC2. Execute os comandos abaixo:
- Clonar o projeto:
git clone https://github.com/pssilva/e-arq-acme-coorp.git
; - Acessar a pasta:
cd e-arq-acme-coorp
; - Instalar as dependencias:
mpn install
; - Instalar as dependencias:
bower install
; - Antes de iniciar o servidor você deve definir as seguintes variáveis de ambiente:
# será usado no sistema: process.env.SESSION_SECRET
export SESSION_SECRET=??????
# será usado no sistema: process.env.NODE_ENV
export NODE_ENV=development
- Iniciar o serviço do MongoDB:
brew services start mongodb
; - Start Server:
grunt
;
Caso queira rodar os servidores individualmente:
1) Start Server Admin:node app/admin/server/config/server.js
;
2) Start Server Avaliação:node app/avaliacao/server/config/server.js
;
3) Start Server Restful:node app/core/server/config/server_api_restful.js
; - Realizar o load dos dados no Banco de dados:
1)http://localhost:3034/suporte/mongosse/
;
2)http://localhost:3034/suporte/mongosse/aluguel
;
3)http://localhost:3034/suporte/mongosse/avaliacao
; - Acessar o sistema Admin:
http://localhost:3034
; - Acessar o sistema Avaliações:
http://localhost:3045
; - Acessar o sistema RESTful:
http://localhost:3033
;
NOTA: MEAN CRUD - para criar um CRUD automaticamente use o comando:
gradle -q createMeanCRUD -PmodelName=articles -PfeatureName=example
Aqui assumimos a estrutura de pasta Vertical. Você pode gerar automaricamente com o comando:
npm install -g generator-mean-app-crud
npm install -g yo
yo mean-app:createApp MyApp --feature-name='MyFeature' --structure-vertical
NOTA: Mais detalhes em generator-mean-app-crud.
Com isso irá gerar um projeto com uma estrutura conforme figura abaixo:
Onde entendemos que a pasta feature representa a separação literal das funcionalidades. Exemplo, pretendo organizar authentication e authorization com o OAuth2.0 separadamente como um plugin usando a estrutura da pasta feature.
O projeto será adaptado para os seguintes temas (themes):
Acessar o sistema:
http://localhost:3000/admin-lte.ejs ou http://localhost:9001/admin-lte.ejs
Acessar o sistema:
http://localhost:3000/gentelella.ejs ou http://localhost:9001/gentelella.ejs
[Conarq, Conselho Nacional de Arquivos: 2011], Copyright © 2011 Conselho Nacional de Arquivos, e-ARQ Brasil
[Caio Ribeiro Pereira: 2016], Apress, Building APIs with Node.js
[Valentin Bojinov: 2015], Copyright © 2015 Packt Publishing, RESTful Web API Design with Node.js: Design and implement comprehensive RESTful solutions in Node.js
[Jurie-Jan Botha: 2015], Copyright © 2015 Packt Publishing, Grunt Cookbook: Over 80 hands-on recipes for streamlining development, management, and deployment with Grunt
[Valeri Karpov, Diego Netto: 2015], John Wiley & Sons, Inc., Professional AngularJS
[Amos Q. Haviv: 2014], Packt Publishing, MEAN Web Development: Master real-time web application development using a mean combination of MongoDB, Express, AngularJS, and Node.js.
[Sébastien Goasguen: 2016], O’Reilly Media, Inc., Docker Cookbook: SOLUTIONS AND EXAMPLES FOR BUILDING DISTRIBUTED APPLICATIONS.
[Alan Mark Berg: 2015], Packt Publishing, Jenkins Continuous Integration Cookbook, Second Edition
[Christian Posta: 2016], O’Reilly Media, Inc., Microservices for Java Developers: A Hands-on Introduction to Frameworks and Containers
[Markus Eisele: 2016], O’Reilly Media, Inc., Modern Java EE Design Patterns:
Building Scalable Architecture for Sustainable Enterprise Development.