# Projeto PDS ## Ideias * **Bot telegram promoções**: bot telegram que acompanha os preços de um produto e avisa sempre que o preço abaixar (em comparação com o preço corrente na hora da mensagem recebida pelo bot) * possui um threshold de variação de preço desejada (ex: avisar somente se preço tiver menor que x) * suporte a diversos sites de compra (ex: steam, amazon, kabum) * **tecnologias**: python, redis/database, ec2 * **plataformas**: telegram * **Music player**: music player que toque músicas vindas de playlists selecionadas pelo usuário em diversas plataformas (spotify e youtube) * possui conexão na API de sites como youtube e spotify * faz o próprio player de uma playlist conjunta * permite edição da playlist (talvez) * remove tracks duplicados (talvez) * **tecnologias**: python * **plataformas**: web, cli (via pypi) * **Análise de dados**: escolher uma fonte de dados e fazer análises em cima destes (ex. estatísticas do redis, steam, twitter) * estatísticas gerais, métricas, análise de dados * **tecnologias**: python, redis stream (apache kafka) * **plataformas**: telegram, cli, web * **Jogo**: ## Práticas de processo (checar se definições conferem) * **histórias de usuários**: * **backlog do produto**: * **backlog do sprint**: * **sprint planning**: pontuar por fibonacci, sprint poker * **sprint review**: slide pequeno colaborativo com o que cada um fez * **retrospectiva**: simular dinâmica de post-it e action points ## Programação * **testes de unidade**: * **testes de integração**: * **testes de interface (opcional)**: * **bons princípios e padrões de projeto**: * **refactoring**: * **revisão de código (pull requests)**: um approval, no mínimo * **code style**: PEP8 e formatação com black ## Deployment * **controle de versões (GitHub)**: github público * **integração contínua**: CI básico com Jenkins ou Circle CI * **trunk-based development**: master + fb? * https://trunkbaseddevelopment.com/ * **feature flags**: * https://martinfowler.com/articles/feature-toggles.html * **deployment contínuo (opcional)**: aws ec2 + k8s via CI (com set image) * https://medium.com/@saidur2/setup-a-kubernetes-cluster-in-aws-under-20-minutes-ecab147c4d89 * **looging**: logging estruturado em json (loguru) + ELK on K8s * https://logz.io/blog/a-practical-guide-to-kubernetes-logging/ * **analytics**: sentry + prometheus/kibana + sonarqube * https://logdna.com/resource/kibana-vs-grafana-vs-prometheus-vs-logdna/ * ## Dump de frameworks/ideias * Python * [Poetry](https://python-poetry.org/docs/) * [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) (se formos fazer um bot) * [Aws](https://aws.amazon.com/pt/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsm.page-all-free-tier=1) Ec2 * Configuração necessária básica via ansible * Kubernetes cluster dentro * Dois namespaces: production e staging * App * Imagem docker com o conteúdo do bot/app * Deployment do app via K8s * Adicionar um redis no k8s como DB * CI/CD * Circle CI vs Travis CI vs Jenkins vs [Github Action](https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions) * https://seandavi.github.io/post/learning-github-actions/ * https://help.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#adding-a-workflow-status-badge-to-your-repository * Estágios: lint (commit), test (commit), qualitygate (master, pos-PR), export requirements (master, pos-PR), build image (master, pos-PR), deploy k8s staging (master, pos-PR), publish prod (tag), deploy k8s prod (tag) ## Dúvidas * Prometheus substitui ELK stack? * Prometheus é necessário tendo ELK stack?