Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pet projects como meio de aprendizado

Pet projects como meio de aprendizado

Esta palestra dá dicas de como ter um pet project e fala como um pet project pode ser efetivo como meio de aprendizagem além de mostrar o case do RagMercado como um pet project na qual foi possível aprender muito.

Sérgio Vilar

September 16, 2017
Tweet

More Decks by Sérgio Vilar

Other Decks in Programming

Transcript

  1. PET PROJECTS

    COMO MEIO DE APRENDIZADO

    View Slide

  2. View Slide

  3. “FAÇA ALGO QUE GOSTE
    OU ACABE TRABALHANDO”
    Biscoito do China in Box

    View Slide

  4. COMO SE MANTER

    ATUALIZADO?
    • Acompanhar Podcasts
    • Seguir outros desenvolvedores no Twitter
    • Seguir Rimenes no GitHub (github.com/rimenes)

    View Slide

  5. SE MANTER ATUALIZADO
    TAMBÉM SIGNIFICA
    ACOMPANHAR O MERCADO

    View Slide

  6. COMO CAIR DE CABEÇA
    EM UMA ÁREA
    COMPLETAMENTE NOVA?

    View Slide

  7. LIVROS
    CURSOS
    MÃO NA MASSA

    View Slide

  8. PET PROJECTS AO RESGATE

    View Slide

  9. Necessidades reais e fora do script
    Grande quantidade de pesquisa e estudo necessário
    Melhor forma de aprender é praticando

    View Slide

  10. COMO ENCONTRAR
    UM PET PROJECT?
    • Procure ao seu redor por um problema real
    • Busque algo a qual você domine a regra de negócio
    • Entenda que possivelmente seu público alvo não está

    no seu círculo social

    View Slide

  11. DICAS PARA SE

    MANTER NO PET PROJECT
    • Evite procrastinar
    • Tente fazer entregas incrementais
    • Pare e escreva quando necessário
    • Busque mentoria de alguém já experiente
    • Quando necessário busque opinião de alguém de fora
    • Escute seu público alvo

    View Slide

  12. RUBY FINALMENTE!

    COMO EU VIM PARAR AQUI?

    View Slide

  13. MEU BACKGROUND
    • Programo praticamente todos os dias há 11 anos
    • Mais da metade desse tempo em PHP
    • Recentemente com Javascript

    View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. STACK INICIAL
    • Crawler usando Wombat (felipecsl.com/wombat)
    • Sinatra + ActiveRecord
    • Twitter Bootstrap
    • Droplet de $5 na DigitalOcean

    View Slide

  19. PRIMEIRAS SEMANAS
    • Divulgação dentro do jogo e em grupos do Facebook e Discord
    • 5 mil acessos na primeira semana, 10 mil na segunda
    • Feedback muito positivo da comunidade do jogo
    • Novos recursos sendo deployados diariamente

    View Slide

  20. SEGUNDO MÊS
    • 20 mil acessos por semana
    • Migração para Rails 5
    • Começo dos ataques DDoS

    View Slide

  21. TERCEIRO MÊS
    • Série de novos recursos
    • Passa a ser ferramenta oficial do RagnaXP
    • Quedas constantes devido a DDoS
    • Outros servidores requisitam o serviço

    View Slide

  22. HORA DE ESCALAR
    • API plugada diretamente no banco do jogo, drop do Crawler
    • Atualização da base em background com sidekiq
    • Migração do front-end para o Heroku para lidar com DDoS

    View Slide

  23. HORA DE ESCALAR
    ɂ Ȑ
    Browser

    Rails PostgreSQL
    Heroku Digital Ocean
    Ȑ
    Worker
    Ȑ
    Worker
    Ȑ
    Worker

    View Slide

  24. HORA DE ESCALAR
    • Problemas de performance ao consumir API
    • Sidekiq enchendo o Redis com status de jobs já finalizados
    • Aplicação cheia de queries N+1

    View Slide

  25. COMO RESOLVEU?
    • Scout ajudou a resolver os problemas de N+1
    • O Redis do Sidekiq ficou sendo limpo a cada 1h ¯\_(ツ)_/¯
    • Amigos ajudaram a melhorar a performance no consumo da API

    View Slide

  26. MercadoXP -> RagMercado
    • MercadoXP vira RagMercado e passa a ser um serviço
    • Multitenancy usando Apartment (influitive/apartment)

    View Slide

  27. APLICATIVO

    ANDROID
    • API com Grape + Roar
    • React Native

    View Slide

  28. O QUE EU USEI?
    • bulma.io para deixar o Front-End bonitinho
    • Devise para autenticação de usuários
    • ClockWork para recorrência de jobs no Sidekiq
    • sentry.io para captura de erros em produção
    • Capistrano para deploys para a DigitalOcean
    • cronitor.io para notificação caso os jobs parem

    View Slide

  29. UM PET PROJECT PODE

    TE ENSINAR MUITO MAIS DO QUE

    USAR UMA TECNOLOGIA

    View Slide

  30. AGRADECIMENTOS ESPECIAIS
    • Minha esposa por abrir mão da minha companhia por alguns (vários)

    fins de semana
    • Rimenes por toda mentoria prestada
    • Joel por sempre opinar e me ajudar com o design da infraestrutura
    • Amigos da Reliant por dar idéias de como lidar com os problemas 

    de performance

    View Slide

  31. OBRIGADO!
    ragmercado.info
    svilar.me

    View Slide