svnHow deployment system worksThe overall scheme how deployment system works is follows: Developers commit their changes into SVN repository. When a commit is inserted into SVN repository, the deployment system is notified about new changes using hooks. The deployment server then retrieves files of the project from the SVN repository, builds the application, and pushes it to servers of the cluster. The whole process is completely automated. Developer just commits changes into SVN repository and deployment system will do the rest to update cluster. Deployment clusters and serversThe picture above shows only one cluster. In the real world, however, things are a little more complicated, and developers may need to deploy their applications to many clusters. In the simplest example this may be a production and a demo cluster. There may also be a cluster for each developer (for them to be able to test their features and not to disturb other developers), a staging cluster to show current most stable application release in opposite to demo cluster that contains the latest version of the application. Take no notice that a demo cluster may contain only a single server. A cluster of a single server is still a cluster. So, there are two entities considered in the deployment process: a cluster, and a server. Cluster is a set of servers. A server is not always a separate computer. For example, we may install demo and staging servers at a single computer. Each server belongs to exactly one cluster. Deployment branchesEach cluster is connected to a branch inside an SVN repository. All deployment branches are stored under Deployment branches are named after the cluster designation. Example names are:
When a developer commits into a branch, connected cluster gets updated. More then one cluster can be connected to a branch. In this case, all these clusters are updated when a commit is made into this branch. The deployment process stepsDeployment process consists of the following steps:
All servers of the cluster perform update at the same step. For example, no servers will be locked if there is at least one server that has not yet completed files update. Database will not be updated until all servers of the cluster get locked. Lock will not be released from any server until database update process is completed. To move servers between steps correctly, servers and clusters are assigned a state at each moment of time. The states are described in the articles below. See also Client states Cluster states Последняя модификация: 21.03.13 14:16 |