continuous integration - Scalable and extensible cross-platform architecture for a mostly solo development pipeline? -
i'm looking solid foundation development infrastructure utilizes ci/cd tools in accordance today's best practices (dated end-of-year 2016). want have setup solo development environment, appreciate tips on extending higher throughput , higher availability eventually; if start company, best foundation @ moment in time allow dynamic growth?
i understand broad question, , there different ways different work flows across different stacks. want keep things open sourced , virtualized, though don't mind answers aren't well. long it's modular in terms of tooling, kill server , redeploy different 1 relative ease (e.g. if wanted switch puppet chef, i'd kill puppet server , provision chef one).
some tools i'm familiar (that i'm studying) fulfills role in devops architecture:
- configuration management: puppet, ansible
- ci: jenkins, travis ci
- packaging/deployment: docker, lxc
- version control:git, github
- logging: elk stack
- virtualization/provisioning: vagrant, virtualbox
- cloud resources: digitalocean, aws, azure, openstack
i know i'm missing multiple components here (like security or storage), , i'd gladly take suggestions regarding i'm concerned these moment.
some resources of development roles , tooling i've looked at.
i'm sorry tell this, question wrong foundation of question.
first of, there's no silver bullet architecture, architecture defines skeleton of software system fulfill set of business needs. there can no architecture without business needs.
you need consider that, speaking, a system architecture tries balance 2 concepts, flexibility vs complexity. more flexible is, more complexity needed handle it. there're few occasions simplest solution flexible one.
the trick of architecture comes identifying , why flexibility preferred on simplicity , , why simplicity preferred on flexibility... , business related. tooling, programming language, alm, devops tools, database... depends on business.
now... of above said, want simplicity or flexibility? let's @ statement:
i want have setup solo development environment ... if start company, best foundation...
you're looking @ wrong way. you're dreaming much... never work, never, ever... i'm sorry.
you have team of 1 , don't have product sell. stop thinking time when you'll have 10.000 users per second , you're floating on money... you're not there, when there can start thinking complex architectures... think zuckerberg started multinode, bigdata, highly scalable architecture based on latest tools , practices facebook? didn't. started knew , focused on creating product intended target: single university... knew needed support 1 university, couple hundred users... wasn't architecting 500 million users, , can tell first version of facebook didn't current one... , there have still.
you need same, stop focusing on flexibility, start focusing on simplicity... you need have product soon, , first... not have sell, learn need. not right first time... need iterate
if start planning dynamic growth, scalability, devops, automatic deployments, etc... complexity of thinking eat time , you'll never product started, die before has chance start. complex architectures complex teams , complex products... stablished products need flexibility, need scalability. nothing free. way before have 10.000 clients , system overloading pressure, have enough money hire people handle that, establish devops practices, worry scaling system...
do not architect system distant future, architect system today's requirement view on next year requirements , estimations.
Comments
Post a Comment