Yes, it is possible to share a single instance of Memcache between multiple projects. Memcache is a memory store space, and you can run memcache on one or more servers. You can also configure your client to speak to a particular set of instances. So, you can run two different Memcache processes on the same host and yet they are completely independent. Unless, if you have partitioned your data, then it becomes necessary to know from which instance to get the data from or to put into.
DevOps can’t be referred to as a tool; it is a collaborative work culture that combines development and operations teams for continuous development, continuous testing, continuous integration, continuous deployment, and continuous monitoring.
To create launchers on a desktop in Ubuntu you can use
ALT+F2 then type ” gnome-desktop-item-edit –create-new~/desktop,” it will launch the old GUI dialog and create a launcher on your desktop
You can open the background image in The Gimp (image editor) and then use the dropper tool to select the color on a specific point. It gives you the RGB value of the color at that point.
To open an Ubuntu terminal in a particular directory, you can use custom keyboard short cut.
To do that, in the command field of a new custom keyboard, type genome – terminal – – working – directory = /path/to/dir.
To enable startup sound
>> Click control gear and then click on Startup Applications
>> In the Startup Application Preferences window, click Add to add an entry
>> Then fill the information in comment boxes like Name, Command, and Comment
/usr/bin/canberra-gtk-play—id= "desktop-login"—description= "play login sound"
>> Logout and then login once you are done
You can also open it with shortcut key Ctrl+Alt+T.
When you use a command
it will give detailed output about Unity’s requirements, and if they are met, then your video card can run unity.
SubGit helps you to migrate SVN to Git. It also allows you to build a writable Git mirror of a local or remote Subversion repository.
Here, are essential best practices for DevOps implementation:
* The speed of delivery means time taken for any task to get them into the production environment.
* Track how many defects are found in the various
* It’s important to measure the actual or the average time that it takes to recover in case of a failure in the production environment.
* The number of bugs being reported by the customer also impact the quality of the application.
Following are the useful prerequisites for DevOps Implementation:
* At least one Version Control Software
* Proper communication between the team members
* Automated testing
* Automated deployment
It is a powerful automation platform which transforms infrastructure into code. In this tool, you can use write scripts that are used to automate processes.
Pointer record which is also known as (PTR) is used for reverse DNS lookup.
Continuous deployment is fully automated, and the deployment to production needs no manual intervention in continuous deployment; whereas, in continuous delivery, the deployment to production requires some manual intervention for change management in the organization, and it needs to be approved by the manager or higher authorities to be deployed in production. According to your organization’s application risk factor, continuous deployment/delivery approach will be chosen.
A vagrant is a tool which can create and manage virtualized environments for testing and developing software.
You need to conduct continuous testing to ensure that the new service is ready for production.
A canary release is a pattern which reduces the risk of introducing a new version software into the production environment. It is done by making it available in a controlled manner to a subset of the user. Before making it available to the complete user set.
Two-factor authentication is a security method in which the user provides two ways of identification from separate categories.
Puppet is a useful project management tool. It helps you to automate administration tasks.
A build is a method in which the source code is put together to check whether it works as a single unit. In the build creation process, the source code will undergo compilation, inspection, testing, and deployment.
Examples of popular Cloud Computing Platforms:
1. AWS – Amazon Web Services
2. Microsoft Azure
3. Google Cloud
Git bisect helps you to find the commit which introduced a bug using binary search.
Configuration management consists of practices and the various tools involved to automate the delivery and infrastructure operations. It is all about keeping the server ready (Example Installing system packages, network configuration settings) for application deployment once the application is developed.
So the Ops or the system admin needs to ensure parity in different environments (Dev, QA, PROD, etc…) by provisioning the systems.
Tools Used in this space to automate the tasks of configuration management described above are Chef / Puppet / Ansible
Explain your role as a DevOps Engineer and how you were working as a part of the 24*7 environment and maybe in shifts, the projects involved in automating the CI and CD pipeline and providing support to the project teams.
Hence, taking complete responsibility for maintaining and extending the environments for DevOps automation to more and more projects and different technologies (Example: .NET, J2EE projects) involved within the organization.
Also, explain the process (Example Agile) and tools that were involved in an end to end automation. You could also talk about your experience, if any, in DevOps support over the Cloud environment.
>> The version Control system allows team members to work freely on any file at any time.
>> All the past versions and variants are closely packed up inside the VCS.
>> A distributed VCS like helps you to store the complete history of the project so in case of a breakdown in the central server you can use your team member’s local Git repository.
>> Allows you to see what exact changes are made in the file’s content
The most important components of DevOps are:
* Continuous Integration
* Continuous Testing
* Continuous Delivery
* Continuous Monitoring
My approach to handling revision control would be to post the code on SourceForge or GitHub so everyone can view it. Also, I will post the checklist from the last revision to make sure that any unsolved issues are resolved.
Three of the most common DevOps KPIs are:
* Mean time to failure recovery
* Deployment frequency
* Percentage of failed deployments
The most popular DevOps tools include:
DevOps can be helpful to developers to fix the bug and implement new features quickly. It also helps for clearer communication between the team members.
There are many industries that are using DevOps so you can mention any of those use cases, you can also refer the below example:
Etsy is a peer-to-peer e-commerce website focused on handmade or vintage items and supplies, as well as unique factory-manufactured items. Etsy struggled with slow, painful site updates that frequently caused the site to go down. It affected sales for millions of Etsy’s users who sold goods through online market place and risked driving them to the competitor.
With the help of a new technical management team, Etsy transitioned from its waterfall model, which produced four-hour full-site deployments twice weekly, to a more agile approach. Today, it has a fully automated deployment pipeline, and its continuous delivery practices have reportedly resulted in more than 50 deployments a day with fewer disruptions.
According to me, the most important thing that DevOps helps us achieve is to get the changes into production as quickly as possible while minimizing risks in software quality assurance and compliance. This is the primary objective of DevOps. Learn more in this DevOps tutorial blog.
However, you can add many other positive effects of DevOps. For example, clearer communication and better working relationships between teams i.e. both the Ops team and Dev team collaborate together to deliver good quality software which in turn leads to higher customer satisfaction.
In the waterfall process, as all of us are aware initially complete Requirements are gathered, next the System is designed, Implementation of the System is then done followed by System testing and deployed to the end-users. In this process, the problem was that there was a huge waiting time for build and deployment which made it very difficult to get the feedback.
The solution to the above problem was that the Agile process has to bring in agility in both development and operations. The agile process could be the principal or a certain pre-requisite may be required for DevOps implementation. DevOps goes hand in hand with the Agile process.
The focus area is to release the software in a very timely manner with shorter release cycles and quick feedback. So, the agile process focus will mainly be on speed and in DevOps, it works well with the automation of various tools
Following approaches can be used but that will vary based on the actual project scenarios or from organization to organization
Stage 1: For any DevOps implementation, an assessment of the existing process and implementation for around 2 to 3 weeks taking an average of 5 applications is a must to gauge the AS-IS process, identifies the improvement areas and provides a roadmap for the implementation.
Typically a senior profile like a DevOps architect should be involved to conduct this assessment.
Stage 2: A pilot POC can be done to showcase the end to end working of DevOps. Once this has been accepted and approved by the end-users only then the actual implementation, handover and rolls out the plan for the projects involved should be carried out.
Any pieces of training required will also need to be imparted to the process or tools. DevOps architects, engineers, and testers would need to be involved at this stage.
Stage 3: The projects should now be in DevOps mode with all the components of continuous integration/delivery/testing and monitoring that is being followed.
As the application is developed and deployed, we do need to monitor its performance. Monitoring is also very important as it might help to uncover the defects which might not have been detected earlier.
From the above goal of Continuous Integration which is to get the application out to end-users are primarily enabling continuous delivery. This cannot be completed without a sufficient amount of unit testing and automation testing.
Hence, we need to validate that the code produced and integrated with all the developers who perform as required.
Continuous Delivery is an extension of Continuous Integration which primarily helps to get the features that the developers are developing out to the end-users as soon as possible. During this process, it goes through various stages of QA, Staging, etc., and then for delivery to the PRODUCTION system.
Continuous Integration is a very important component of the Agile process. Typically, developers work on features or user stories within a sprint and commit their changes to the version control repository.
Once the code is committed, then the entire work of developers is well integrated and the build is performed on a regular basis based on every check-in or schedule. Hence, Continuous Integration as a practice forces the developer to integrate their changes with the others so as to get early feedback.
DevOps is a culture that allows the development and the operations team to work together. This results in continuous development, testing, integration, deployment, and monitoring of the software throughout the lifecycle.
Few KPIs of DevOps are given below:
1. Reduce the average time taken to recover from a failure.
2. Increase Deployment frequency in which the deployment occurs.
3. Reduced Percentage of failed deployments.
Continuous Testing (CT) is that phase of DevOps which involves the process of running the automated test cases as part of an automated software delivery pipeline with the sole aim of getting immediate feedback regarding the quality and validation of business risks associated with the automated build of code developed by the developers.
Using this phase will help the team to test each build continuously (as soon as the code developed is pushed) thereby giving the dev teams a chance to get instant feedback on their work and ensuring that these problems don’t arrive in the later stages of SDLC cycle.
Doing this would drastically speed up the workflow followed by the developer to develop the project due to the lack of manual intervention steps to rebuild the project and run the automated test cases every time the changes are made.
Given below is a generic logical flow where everything gets automated for seamless delivery. However, this flow may vary from organization to organization as per the requirement.
1. Developers develop the code and this source code is managed by Version Control System tools like Git etc.
2. Developers send this code to the Git repository and any changes made in the code is committed to this Repository.
3. Jenkins pulls this code from the repository using the Git plugin and build it using tools like Ant or Maven.
4. Configuration management tools like puppet deploys & provisions testing environment and then Jenkins releases this code on the test environment on which testing is done using tools like selenium.
5. Once the code is tested, Jenkins send it for deployment on the production server (even production server is provisioned & maintained by tools like puppet).
6. After deployment It is continuously monitored by tools like Nagios.
7. Docker containers provides testing environment to test the build features.
By incorporating Continuous Integration for both development and testing, it has been found that the software quality has improved and the time taken for delivering the features of the software has drastically reduced.
This also allows the development team to detect and fix errors at the initial stage as each and every commit to the shared repository is built automatically and run against the unit and integration test cases.
Continuous Integration (CI) is a software development practice that makes sure developers integrate their code into a shared repository as and when they are done working on the feature. Each integration is verified by means of an automated build process that allows teams to detect problems in their code at a very early stage rather than finding them after the deployment.
CAMS stands for Culture, Automation, Measurement, and Sharing. It represents the core deeds of DevOps.
Configuration management (CM) helps the team in the automation of time-consuming and tedious tasks thereby enhancing the organization’s performance and agility.
It also helps in bringing consistency and improving the product development process by employing means of design streamlining, extensive documentation, control, and change implementation during various phases/releases of the project.
Configuration management (CM) is basically a practice of systematic handling of the changes in such a way that system does not lose its integrity over a period of time. This involves certain policies, techniques, procedures, and tools for evaluating change proposals, managing them, and tracking their progress along with maintaining appropriate documentation for the same.
SSH stands for Secure Shell and is an administrative protocol that lets users have access and control the remote servers over the Internet to work using the command line.
SSH is a secured encrypted version of the previously known Telnet which was unencrypted and not secure. This ensured that the communication with the remote server occurs in an encrypted form.
SSH also has a mechanism for remote user authentication, input communication between the client and the host, and sending the output back to the client.
These days, the market window of products has reduced drastically. We see new products almost daily. This provides a myriad of choices to consumers but it comes at a cost of heavy competition in the market. Organizations cant afford to release big features after a gap. They tend to ship off small features as releases to the customers at regular intervals so that their products don't get lost in this sea of competition.
Customer satisfaction is now a motto to the organizations which has also become the goal of any product for its success. In order to achieve this, companies need to do the below things:
>> Frequent feature deployments
>> Reduce time between bug fixes
>> Reduce failure rate of releases
>> Quicker recovery time in case of release failures.
>> In order to achieve the above points and thereby achieving seamless product delivery, DevOps culture >> acts as a very useful tool. Due to these advantages, multi-national companies like Amazon and Google have adopted the methodology which has resulted in their increased performance
A DevOps engineer is a person who works with both software developers and the IT staff to ensure smooth code releases. They are generally developers who develop an interest in the deployment and operations domain or the system admins who develop a passion for coding to move towards the development side.
In short, a DevOps engineer is someone who has an understanding of SDLC (Software Development Lifecycle) and of automation tools for developing CI/CD pipelines.