1. Escreva algumas configurações que precisam ser alteradas no arquivo de propriedades
Por exemplo, o número de threads usados quando alguma execução simultânea não está configurada para ser configurável no arquivo de propriedade. Em seguida, seu programa pode ser executado sem problemas e inimigos em ambientes de desenvolvimento e ambientes de teste, mas uma vez implantados no Prod e processou conjuntos de dados maiores como um programa com vários threads, uma IOException será lançada. O motivo pode ser que o ambiente on -line está causando simultaneamente outra coisa. Se o número de threads puder ser configurado no arquivo de propriedades, é muito fácil torná -lo um único aplicativo encadeado. Não precisamos mais implantar e testar aplicativos para resolver problemas. Este método também é adequado para configurar URLs, servidores e números de porta.
Recomenda -se usar arquivos de atributo para externalizar essas configurações, e o formato de arquivo é bom com propriedades, YAML, Hocon e JSON. A aula a seguir implementa o suporte à injeção de mola para arquivos nesses formatos, incluindo suporte de espaço reservado.
https://github.com/superhj1987/awesome-libs/blob/master/src/main/java/me/rowkey/libs/spring/config/awesomepropplaceholderconfigurer.java
2. Simule o ambiente on -line o máximo possível durante o teste
Um cenário típico no processo de produção é usar apenas 1 a 3 contas para testes, e esse número deve ser de 1.000 a 2.000. Ao executar testes de desempenho, os dados utilizados devem ser verdadeiros e não cortados. Os testes de desempenho que não estão próximos do ambiente real podem trazer problemas imprevisíveis de desempenho, expansão e multithreading. Aqui também podemos usar o ambiente de pré-lançamento para resolver alguns problemas.
3. O processamento tolerante a falhas deve ser feito para todas as chamadas externas e serviços internos.
Seja uma chamada de RPC ou uma chamada de serviço de terceiros, não podemos tomar como certo que a disponibilidade é 100%. Não são permitidos tempo limite de chamada de serviço e tentativa, o que afetará adversamente a estabilidade e o desempenho do aplicativo.
4. O sistema deve seguir o princípio das permissões mínimas ao projetar um sistema de segurança
Os serviços da Web estão por toda parte, permitindo que os hackers o explorem facilmente para a negação de ataques de serviço. Portanto, ao projetar um sistema, você precisa seguir o princípio de "permissões mínimas" e adotar a lista de permissões e outros métodos.
5. Os seguintes documentos são necessários
Escreva a documentação do teste de unidade e tenha uma boa cobertura de código.
Desenho de design de alto nível: descreve todos os componentes, interações e estruturas.
Desenhos de design detalhados: específicos para o design do nível de código e alguns processos lógicos -chave.
Documento de composição do sistema: explica todos os arquivos de composição, arquivos de configuração etc. do sistema.
Os documentos DML e DDL no nível do banco de dados, especialmente as instruções de consulta SQL, precisam passar pelo DBA ou pela revisão dos desenvolvedores principais antes que possam ser lançados.
Não apenas para os processos tradicionais de desenvolvimento, mas mesmo para o desenvolvimento ágil, esses documentos são essenciais, caso contrário, causará grande inconveniente na manutenção e entrega subsequentes.
6. Faça um bom trabalho em monitoramento, recuperação de erros, backup e outras funções -chave do sistema
Para alguns módulos funcionais cruciais do sistema, eles devem ser monitorados para impedir que eles afetem a operação do sistema e causassem perdas não estimadas. Além disso, se possível, tente se recuperar após monitorar a falha e envie um alarme se a recuperação falhar. Para alguns arquivos de dados muito importantes, backups redundantes devem ser feitos para evitar algumas falhas repentinas e perda de dados.
7. Projete algumas colunas que são fáceis de rastrear e organizar ao projetar o banco de dados.
Por exemplo, create_time e update_time podem indicar o tempo de criação e atualização do registro. create_by e update_by podem indicar quem criou e atualizou o registro.
Além disso, a exclusão de registros às vezes não é realmente excluída. No momento, é necessário projetar uma coluna que represente o status desse registro, como a coluna 'ativo' ou 'inativa' '' status '.
8. Faça um plano de reversão do projeto
Quando a nova função é lançada, se não houver um plano de reversão, pode estar com pressa e fazer com que os serviços on -line fiquem indisponíveis por um período de tempo. Existe um bom plano de reversão que permite executar operações relacionadas de maneira ordenada e restaurar o sistema a um estado executável dentro de um tempo controlado.
9. Antes do lançamento do projeto, a análise quantitativa deve ser feita
A análise quantitativa deve ser feita para a memória, banco de dados, arquivos, cache, etc. usados no projeto. Ele estima a ocupação espacial no futuro e fornece uma referência para a alocação da máquina de operação e manutenção. Evite que o armazenamento insuficiente é causado pelo rápido crescimento do volume de dados. Isso é muito importante, caso contrário, é fácil fazer com que os serviços on -line não estejam disponíveis.
10. Desenvolva um plano de implantação do sistema.
A plataforma para implantação do sistema é uma parte crucial. A descrição da plataforma de implantação não pode ser limitada a um servidor ou dois bancos de dados, pelo menos precisa incluir
11. Escolha a ferramenta/tecnologia mais adequada
Em muitos casos, os desenvolvedores usam um idioma ou ferramenta que desejam aprender em um sistema de produção. Normalmente, essa não é a melhor opção. Por exemplo, use um banco de dados NoSQL para dados que já são de fato um formulário relacional. Seja um idioma ou uma ferramenta, existem cenários aplicáveis. Não podemos buscar inovação, nem podemos usar o "eu" como padrão.
12. Tenha reservas de conhecimento suficientes em alguns campos técnicos importantes.
Padrão de design
JVM Ajustando "Problema de Concorrência" com vários threads
Problemas de transação, incluindo problemas de desempenho da transação distribuídos, incluindo GC, computação e outros caches
Através deste artigo, espero que amigos que possam ajudar a desenvolver programas Java, obrigado pelo seu apoio a este site!