SlideShare a Scribd company logo
1 of 26
Download to read offline
Perforce Administration:
Optimization, Scalability,
Availability, and Reliability
Michael Mirman
Perforce Administrator
MathWorks, Inc.

2011
INTRODUCTION
ARCHITECTURE OVERVIEW


   •  Approximately 500 users
   •  Several million archive files
   •  Using almost all possible triggers, several daemons
   •  Mirroring our own bug database into Perforce
   •  Interfaces: P4, P4V, P4Perl, P4Java, Emacs,
   P4Eclipse, P4DB, P4EXP
   •  P4 Broker, P4 Proxies
   •  Multiple replicas
P4 PROXIES AND P4 BROKER
AVAILABILITY


    •  Proxies use anycast technology
         •  Special routing technology allows all users to have
         the default port (perforce:1666) regardless of their
         physical location
         •  Redirects users to the physically nearest proxy
         server
         •  Provides automatic fail-over if one proxy goes down

    •  P4broker is a High Availability VM and can be restarted
    anytime with minimal downtime

    •  Replicas allow read-only access if master is offline
REPLICATION
REPLICATION (2009.2 SOLUTION)


    P4 replicate command replicates only meta-data.
    •  Replicate archive synchronously
        p4 -p MASTER replicate -s STATEFILE -J JNLPREFIX 
        SOMEDIR/p4admin_replicate -port 1666 -srchost 
        MASTERHOST -srctop DATADIR
    •  Read journal records, pass them to p4d to replay them,
    and when necessary start copying archive:
        rsync -av --delete “$srchost:$srctop/$dir/” “$dir/”
    •  Script available in the public depot:
        //guest/michael_mirman/conference2011/p4admin_replicate
REPLICATION (2010.2 SOLUTION)


    P4 pull command is available in 2010.2.
    •  Can replicate metadata and/or archive
    •  Configurables are a good way to set pull commands
       -> p4 configure show Replica
       Replica: startup.1 = pull -i 2 -J /perforce/1666/journal
       Replica: startup.2 = pull -i 1 -u
       Replica: startup.3 = pull -i 1 -u       wait for 2011.1
       Replica: startup.4 = pull -i 1 -u       wait for 2011.1
P4 PULL VS P4ADMIN_REPLICATE


   •  p4 pull is more efficient than p4admin_replicate
        •  times when metadata are matching the archive are
        determined differently
        •  recursive rsync takes a long time for top directories
   •  p4admin_replicate has extra features
        •  p4 replicate can filter records
        •  p4admin_replicate can have multiple destinations
        •  p4admin_replicate can be used to update archive
        without updating metadata
        •  detailed logging – easier introspection

   Use p4 replicate if you need to filter journal records
LOAD BALANCE
P4 BROKER


   •  Continuous builds and other read-only applications may
   be happy with a replica
   •  Continuous builds may be happy with a metadata
   replica to determine the time to start building
        •  TeamCity submits several queries for each build
        •  Some of our builds use “p4 fixes -i” and “p4
        changes”
   •  Our usage of p4broker:
        •  Redirect queries from Build systems
        •  Support P4DB (web read-only interface)
        •  Provide a nice message if the master is under
        maintenance and only read-only access is provided
STALE REPLICAS


   What if my replica goes stale?
   •  Monitor the age of your replica.
       Cron example:
    * * * * * for n in 1 2 3 4 5 6; do export DT=`date`; echo
   "$n. $DT"; p4 -p perforce:1666 counter keepinsync "$DT";
   sleep 10; done
       Look at the replica age:
   -> p4 -p perforce:1666 counter keepinsync!
   Mon Mar 28 16:06:12 EDT 2011!
   -> p4 -p replica1:1666 counter keepinsync!
   Mon Mar 28 16:06:02 EDT 2011
   •  If the replica age goes over a threshold, regenerate the
   broker config file and alarm the administrator
SERVER UNDER MAINTENANCE


   Additional benefits of p4broker

   •  If the master server is unavailable, the broker config is
   regenerated to provide the appropriate message for non-
   read-only commands

   •  If no servers are available, the broker config is
   regenerated to provide a different message (“No servers
   are available”) instead of not user-friendly “Connection
   refused”
OUR EXPERIENCE WITH LOAD BALANCE


   What we find useful:

   •  Monitor the load and collect data even if we don’t need
   these data right now

   •  Use replicas to distribute the load

   •  Maintain the broker config file according to server
   availability and replica age

   •  Broker provides transparency and increases the
   availability of the server
OFFLINE CHECKPOINTING
CHECKPOINTING


   Checkpointing causes users to wait

   •  It’s always too long

   •  Different ways of creating checkpoints offline
        •  our old way (using NetApp snapshots):
       //guest/michael_mirman/snap_checkpoint/snap_checkpoint
       •  our new way: using metadata replica
USING METADATA REPLICA


   Metadata replica practically does not lag behind the
   master.
   •  Settings:
   -> p4 configure show Replica2
   Replica2: monitor = 1
   Replica2: server = 1
   Replica2: startup.1 = pull -i 4 -J /export/journal/perforce/1666/journal
   •  Command:
     p4d –r ROOTDIR –z –jc CKPDIR/perforce.1666
   •  Nightly db validation
     p4d –r ROOTDIR –xv
     p4d –r ROOTDIR –xx
MINIMIZE DOWNTIME
DISASTER RECOVERY PLAN


 •  Checkpoints and journals are copied to the backup filer
 immediately after their creation

 •  Archive is maintained continuously by p4admin_replicate

 •  Two test servers are used to verify the restore process

 •  DB is restored from the latest checkpoint + all following
 journals

 •  The earliest journal is determined by the time stamp from
 the first @ex@ record from the checkpoint
DISASTER RECOVERY PLAN (continued)


   •  Test restore process includes
      p4d –xv
      p4d –xx
      p4 verify –qz //…

   •  Repository is split up and verified in N processes in
   parallel (example in the public depot: //guest/
   michael_mirman/conference2011/pverify)
FAIL-OVER PLAN


   •  No automatic fail-over (conscious decision: assess the
   situation)

   •  Use it after rebuilding database on a replica

   •  Fail-over is accomplished by changing the broker
   config file
        •  block write access
        •  wait for the replication to get the standby to be in
        sync with the master
        •  allow write access to the new master
MAJOR UPGRADE


   •  Place all binaries in the right locations and update
   licenses if necessary
   •  Reconfigure p4broker to block write access and
   redirect all read-only requests to a replica
   •  Wait until the replica is in sync with the master
   •  Stop the master and all replication processes
   •  Upgrade the master (p4d -xu) and restart it
   •  Reconfigure p4broker not to use any replica
   •  Upgrade and restart every replica
   •  Restart replication processes
   •  Reconfigure p4broker to use replicas as usual
   •  Restarting p4broker and proxies cause short service
   interruptions, but we don’t always have to do this
SUMMARY
WHAT WORKED WELL FOR US


   To increase availability:
       •  Anycast with multiple proxies – no need to
       reconfigure clients when infrastructure changes
       •  High-Availability VM for p4broker
       •  Maintaining a warm standby replica.
   To improve load balancing:
       •  Moving some maintenance procedures to
       replica servers (our VMs are adequate);
       •  Creating checkpoints on a replica server and
       testing them regularly;
       •  Using p4broker to redirect some load to a
       replica server.
WHAT ELSE WORKED WELL


   Having test servers with identical or very similar
   architecture.

   Replicating data synchronously on replicas and
   continuously on archive.

   “Set it and forget it” - Administration is easy when
   you have automated most functions.
THANK YOU!




   ANY QUESTIONS?

More Related Content

What's hot

[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at NuxeoNuxeo
 
Discover Kafka on OpenShift: Processing Real-Time Financial Events at Scale (...
Discover Kafka on OpenShift: Processing Real-Time Financial Events at Scale (...Discover Kafka on OpenShift: Processing Real-Time Financial Events at Scale (...
Discover Kafka on OpenShift: Processing Real-Time Financial Events at Scale (...confluent
 
Built in physical and logical replication in postgresql-Firat Gulec
Built in physical and logical replication in postgresql-Firat GulecBuilt in physical and logical replication in postgresql-Firat Gulec
Built in physical and logical replication in postgresql-Firat GulecFIRAT GULEC
 
Replication
ReplicationReplication
ReplicationPerforce
 
High availability for puppet - 2016
High availability for puppet - 2016High availability for puppet - 2016
High availability for puppet - 2016Zack Smith
 
Chef Patterns at Bloomberg Scale
Chef Patterns at Bloomberg ScaleChef Patterns at Bloomberg Scale
Chef Patterns at Bloomberg ScaleChef
 
Apache Kafka
Apache KafkaApache Kafka
Apache KafkaJoe Stein
 
Scaling Servers and Storage for Film Assets
Scaling Servers and Storage for Film Assets  Scaling Servers and Storage for Film Assets
Scaling Servers and Storage for Film Assets Perforce
 
PuppetCamp Sydney 2012 - Building a Multimaster Environment
PuppetCamp Sydney 2012 - Building a Multimaster EnvironmentPuppetCamp Sydney 2012 - Building a Multimaster Environment
PuppetCamp Sydney 2012 - Building a Multimaster EnvironmentGreg Cockburn
 
Accelerate your web app with a layer of Varnish
Accelerate your web app with a layer of VarnishAccelerate your web app with a layer of Varnish
Accelerate your web app with a layer of VarnishJeremy Cook
 
Spot Trading - A case study in continuous delivery for mission critical finan...
Spot Trading - A case study in continuous delivery for mission critical finan...Spot Trading - A case study in continuous delivery for mission critical finan...
Spot Trading - A case study in continuous delivery for mission critical finan...SaltStack
 
SREConEurope15 - The evolution of the DHCP infrastructure at Facebook
SREConEurope15 - The evolution of the DHCP infrastructure at FacebookSREConEurope15 - The evolution of the DHCP infrastructure at Facebook
SREConEurope15 - The evolution of the DHCP infrastructure at FacebookAngelo Failla
 
HBase replication
HBase replicationHBase replication
HBase replicationwchevreuil
 
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...OpenStack Korea Community
 
Kea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISCKea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISCMen and Mice
 
LAB - Perforce Large Scale & Multi-Site Implementations
LAB - Perforce Large Scale & Multi-Site ImplementationsLAB - Perforce Large Scale & Multi-Site Implementations
LAB - Perforce Large Scale & Multi-Site ImplementationsPerforce
 
Webinar Slides : Migrating to MySQL, MariaDB Galera and/or Percona XtraDB Clu...
Webinar Slides : Migrating to MySQL, MariaDB Galera and/or Percona XtraDB Clu...Webinar Slides : Migrating to MySQL, MariaDB Galera and/or Percona XtraDB Clu...
Webinar Slides : Migrating to MySQL, MariaDB Galera and/or Percona XtraDB Clu...Severalnines
 
HA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and KeepalivedHA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and KeepalivedGanapathi Kandaswamy
 

What's hot (20)

Tomcatx performance-tuning
Tomcatx performance-tuningTomcatx performance-tuning
Tomcatx performance-tuning
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo
 
Discover Kafka on OpenShift: Processing Real-Time Financial Events at Scale (...
Discover Kafka on OpenShift: Processing Real-Time Financial Events at Scale (...Discover Kafka on OpenShift: Processing Real-Time Financial Events at Scale (...
Discover Kafka on OpenShift: Processing Real-Time Financial Events at Scale (...
 
Built in physical and logical replication in postgresql-Firat Gulec
Built in physical and logical replication in postgresql-Firat GulecBuilt in physical and logical replication in postgresql-Firat Gulec
Built in physical and logical replication in postgresql-Firat Gulec
 
Replication
ReplicationReplication
Replication
 
CephFS Update
CephFS UpdateCephFS Update
CephFS Update
 
High availability for puppet - 2016
High availability for puppet - 2016High availability for puppet - 2016
High availability for puppet - 2016
 
Chef Patterns at Bloomberg Scale
Chef Patterns at Bloomberg ScaleChef Patterns at Bloomberg Scale
Chef Patterns at Bloomberg Scale
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
 
Scaling Servers and Storage for Film Assets
Scaling Servers and Storage for Film Assets  Scaling Servers and Storage for Film Assets
Scaling Servers and Storage for Film Assets
 
PuppetCamp Sydney 2012 - Building a Multimaster Environment
PuppetCamp Sydney 2012 - Building a Multimaster EnvironmentPuppetCamp Sydney 2012 - Building a Multimaster Environment
PuppetCamp Sydney 2012 - Building a Multimaster Environment
 
Accelerate your web app with a layer of Varnish
Accelerate your web app with a layer of VarnishAccelerate your web app with a layer of Varnish
Accelerate your web app with a layer of Varnish
 
Spot Trading - A case study in continuous delivery for mission critical finan...
Spot Trading - A case study in continuous delivery for mission critical finan...Spot Trading - A case study in continuous delivery for mission critical finan...
Spot Trading - A case study in continuous delivery for mission critical finan...
 
SREConEurope15 - The evolution of the DHCP infrastructure at Facebook
SREConEurope15 - The evolution of the DHCP infrastructure at FacebookSREConEurope15 - The evolution of the DHCP infrastructure at Facebook
SREConEurope15 - The evolution of the DHCP infrastructure at Facebook
 
HBase replication
HBase replicationHBase replication
HBase replication
 
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
 
Kea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISCKea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISC
 
LAB - Perforce Large Scale & Multi-Site Implementations
LAB - Perforce Large Scale & Multi-Site ImplementationsLAB - Perforce Large Scale & Multi-Site Implementations
LAB - Perforce Large Scale & Multi-Site Implementations
 
Webinar Slides : Migrating to MySQL, MariaDB Galera and/or Percona XtraDB Clu...
Webinar Slides : Migrating to MySQL, MariaDB Galera and/or Percona XtraDB Clu...Webinar Slides : Migrating to MySQL, MariaDB Galera and/or Percona XtraDB Clu...
Webinar Slides : Migrating to MySQL, MariaDB Galera and/or Percona XtraDB Clu...
 
HA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and KeepalivedHA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and Keepalived
 

Similar to Perforce Administration: Optimization, Scalability, Availability and Reliability

[India Merge World Tour] Meru Networks
[India Merge World Tour] Meru Networks[India Merge World Tour] Meru Networks
[India Merge World Tour] Meru NetworksPerforce
 
Evolution Of MongoDB Replicaset
Evolution Of MongoDB ReplicasetEvolution Of MongoDB Replicaset
Evolution Of MongoDB ReplicasetM Malai
 
Transferring Changes Between Perforce Servers
Transferring Changes Between Perforce ServersTransferring Changes Between Perforce Servers
Transferring Changes Between Perforce ServersPerforce
 
Best And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM ConnectionsBest And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM ConnectionsLetsConnect
 
Evolution of MongoDB Replicaset and Its Best Practices
Evolution of MongoDB Replicaset and Its Best PracticesEvolution of MongoDB Replicaset and Its Best Practices
Evolution of MongoDB Replicaset and Its Best PracticesMydbops
 
Multi-Site Perforce at NetApp
Multi-Site Perforce at NetAppMulti-Site Perforce at NetApp
Multi-Site Perforce at NetAppPerforce
 
[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure[MathWorks] Versioning Infrastructure
[MathWorks] Versioning InfrastructurePerforce
 
OpenPOWER Application Optimization
OpenPOWER Application Optimization OpenPOWER Application Optimization
OpenPOWER Application Optimization Ganesan Narayanasamy
 
[Perforce] Replication - Read Only Installs to Fully Filtered Forwarding
[Perforce] Replication - Read Only Installs to Fully Filtered Forwarding[Perforce] Replication - Read Only Installs to Fully Filtered Forwarding
[Perforce] Replication - Read Only Installs to Fully Filtered ForwardingPerforce
 
Still All on One Server: Perforce at Scale
Still All on One Server: Perforce at Scale Still All on One Server: Perforce at Scale
Still All on One Server: Perforce at Scale Perforce
 
[Perforce] Admin Workshop
[Perforce] Admin Workshop[Perforce] Admin Workshop
[Perforce] Admin WorkshopPerforce
 
Percona Xtrabackup - Highly Efficient Backups
Percona Xtrabackup - Highly Efficient BackupsPercona Xtrabackup - Highly Efficient Backups
Percona Xtrabackup - Highly Efficient BackupsMydbops
 
Replication and replica sets
Replication and replica setsReplication and replica sets
Replication and replica setsChris Westin
 
SCU 2015 - Hyper-V Replica
SCU 2015 - Hyper-V ReplicaSCU 2015 - Hyper-V Replica
SCU 2015 - Hyper-V ReplicaMike Resseler
 
Accelerating Software Development with NetApp's P4flex
Accelerating Software Development with NetApp's P4flexAccelerating Software Development with NetApp's P4flex
Accelerating Software Development with NetApp's P4flexPerforce
 
Ceph Tech Talk -- Ceph Benchmarking Tool
Ceph Tech Talk -- Ceph Benchmarking ToolCeph Tech Talk -- Ceph Benchmarking Tool
Ceph Tech Talk -- Ceph Benchmarking ToolCeph Community
 
White Paper: Perforce Administration Optimization, Scalability, Availability ...
White Paper: Perforce Administration Optimization, Scalability, Availability ...White Paper: Perforce Administration Optimization, Scalability, Availability ...
White Paper: Perforce Administration Optimization, Scalability, Availability ...Perforce
 
Nabil Nawaz Oracle Oracle 12c Data Guard Deep Dive Presentation
Nabil Nawaz Oracle Oracle 12c Data Guard Deep Dive PresentationNabil Nawaz Oracle Oracle 12c Data Guard Deep Dive Presentation
Nabil Nawaz Oracle Oracle 12c Data Guard Deep Dive PresentationNabil Nawaz
 
MySQL Replication Basics
MySQL Replication BasicsMySQL Replication Basics
MySQL Replication BasicsAbdul Manaf
 

Similar to Perforce Administration: Optimization, Scalability, Availability and Reliability (20)

[India Merge World Tour] Meru Networks
[India Merge World Tour] Meru Networks[India Merge World Tour] Meru Networks
[India Merge World Tour] Meru Networks
 
Evolution Of MongoDB Replicaset
Evolution Of MongoDB ReplicasetEvolution Of MongoDB Replicaset
Evolution Of MongoDB Replicaset
 
Transferring Changes Between Perforce Servers
Transferring Changes Between Perforce ServersTransferring Changes Between Perforce Servers
Transferring Changes Between Perforce Servers
 
Best And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM ConnectionsBest And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM Connections
 
Evolution of MongoDB Replicaset and Its Best Practices
Evolution of MongoDB Replicaset and Its Best PracticesEvolution of MongoDB Replicaset and Its Best Practices
Evolution of MongoDB Replicaset and Its Best Practices
 
Multi-Site Perforce at NetApp
Multi-Site Perforce at NetAppMulti-Site Perforce at NetApp
Multi-Site Perforce at NetApp
 
Drop the Pressure on your Production Server
Drop the Pressure on your Production ServerDrop the Pressure on your Production Server
Drop the Pressure on your Production Server
 
[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure
 
OpenPOWER Application Optimization
OpenPOWER Application Optimization OpenPOWER Application Optimization
OpenPOWER Application Optimization
 
[Perforce] Replication - Read Only Installs to Fully Filtered Forwarding
[Perforce] Replication - Read Only Installs to Fully Filtered Forwarding[Perforce] Replication - Read Only Installs to Fully Filtered Forwarding
[Perforce] Replication - Read Only Installs to Fully Filtered Forwarding
 
Still All on One Server: Perforce at Scale
Still All on One Server: Perforce at Scale Still All on One Server: Perforce at Scale
Still All on One Server: Perforce at Scale
 
[Perforce] Admin Workshop
[Perforce] Admin Workshop[Perforce] Admin Workshop
[Perforce] Admin Workshop
 
Percona Xtrabackup - Highly Efficient Backups
Percona Xtrabackup - Highly Efficient BackupsPercona Xtrabackup - Highly Efficient Backups
Percona Xtrabackup - Highly Efficient Backups
 
Replication and replica sets
Replication and replica setsReplication and replica sets
Replication and replica sets
 
SCU 2015 - Hyper-V Replica
SCU 2015 - Hyper-V ReplicaSCU 2015 - Hyper-V Replica
SCU 2015 - Hyper-V Replica
 
Accelerating Software Development with NetApp's P4flex
Accelerating Software Development with NetApp's P4flexAccelerating Software Development with NetApp's P4flex
Accelerating Software Development with NetApp's P4flex
 
Ceph Tech Talk -- Ceph Benchmarking Tool
Ceph Tech Talk -- Ceph Benchmarking ToolCeph Tech Talk -- Ceph Benchmarking Tool
Ceph Tech Talk -- Ceph Benchmarking Tool
 
White Paper: Perforce Administration Optimization, Scalability, Availability ...
White Paper: Perforce Administration Optimization, Scalability, Availability ...White Paper: Perforce Administration Optimization, Scalability, Availability ...
White Paper: Perforce Administration Optimization, Scalability, Availability ...
 
Nabil Nawaz Oracle Oracle 12c Data Guard Deep Dive Presentation
Nabil Nawaz Oracle Oracle 12c Data Guard Deep Dive PresentationNabil Nawaz Oracle Oracle 12c Data Guard Deep Dive Presentation
Nabil Nawaz Oracle Oracle 12c Data Guard Deep Dive Presentation
 
MySQL Replication Basics
MySQL Replication BasicsMySQL Replication Basics
MySQL Replication Basics
 

More from Perforce

How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsPerforce
 
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...Perforce
 
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Perforce
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsPerforce
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessPerforce
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsPerforce
 
How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog Perforce
 
Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Perforce
 
Shift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowShift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowPerforce
 
Hybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldHybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldPerforce
 
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterpriseBetter, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterprisePerforce
 
Easier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMEasier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMPerforce
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog Perforce
 
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Perforce
 
How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure Perforce
 
Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Perforce
 
Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Perforce
 
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Perforce
 
What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4Perforce
 
Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Perforce
 

More from Perforce (20)

How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning Needs
 
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
 
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPs
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development Process
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOps
 
How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog
 
Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team
 
Shift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowShift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New Workflow
 
Hybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldHybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated World
 
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterpriseBetter, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
 
Easier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMEasier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALM
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog
 
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
 
How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure
 
Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2
 
Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?
 
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
 
What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4
 
Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 

Recently uploaded (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

Perforce Administration: Optimization, Scalability, Availability and Reliability

  • 1. Perforce Administration: Optimization, Scalability, Availability, and Reliability Michael Mirman Perforce Administrator MathWorks, Inc. 2011
  • 3. ARCHITECTURE OVERVIEW •  Approximately 500 users •  Several million archive files •  Using almost all possible triggers, several daemons •  Mirroring our own bug database into Perforce •  Interfaces: P4, P4V, P4Perl, P4Java, Emacs, P4Eclipse, P4DB, P4EXP •  P4 Broker, P4 Proxies •  Multiple replicas
  • 4. P4 PROXIES AND P4 BROKER
  • 5. AVAILABILITY •  Proxies use anycast technology •  Special routing technology allows all users to have the default port (perforce:1666) regardless of their physical location •  Redirects users to the physically nearest proxy server •  Provides automatic fail-over if one proxy goes down •  P4broker is a High Availability VM and can be restarted anytime with minimal downtime •  Replicas allow read-only access if master is offline
  • 7. REPLICATION (2009.2 SOLUTION) P4 replicate command replicates only meta-data. •  Replicate archive synchronously p4 -p MASTER replicate -s STATEFILE -J JNLPREFIX SOMEDIR/p4admin_replicate -port 1666 -srchost MASTERHOST -srctop DATADIR •  Read journal records, pass them to p4d to replay them, and when necessary start copying archive: rsync -av --delete “$srchost:$srctop/$dir/” “$dir/” •  Script available in the public depot: //guest/michael_mirman/conference2011/p4admin_replicate
  • 8. REPLICATION (2010.2 SOLUTION) P4 pull command is available in 2010.2. •  Can replicate metadata and/or archive •  Configurables are a good way to set pull commands -> p4 configure show Replica Replica: startup.1 = pull -i 2 -J /perforce/1666/journal Replica: startup.2 = pull -i 1 -u Replica: startup.3 = pull -i 1 -u wait for 2011.1 Replica: startup.4 = pull -i 1 -u wait for 2011.1
  • 9. P4 PULL VS P4ADMIN_REPLICATE •  p4 pull is more efficient than p4admin_replicate •  times when metadata are matching the archive are determined differently •  recursive rsync takes a long time for top directories •  p4admin_replicate has extra features •  p4 replicate can filter records •  p4admin_replicate can have multiple destinations •  p4admin_replicate can be used to update archive without updating metadata •  detailed logging – easier introspection Use p4 replicate if you need to filter journal records
  • 11. P4 BROKER •  Continuous builds and other read-only applications may be happy with a replica •  Continuous builds may be happy with a metadata replica to determine the time to start building •  TeamCity submits several queries for each build •  Some of our builds use “p4 fixes -i” and “p4 changes” •  Our usage of p4broker: •  Redirect queries from Build systems •  Support P4DB (web read-only interface) •  Provide a nice message if the master is under maintenance and only read-only access is provided
  • 12. STALE REPLICAS What if my replica goes stale? •  Monitor the age of your replica. Cron example: * * * * * for n in 1 2 3 4 5 6; do export DT=`date`; echo "$n. $DT"; p4 -p perforce:1666 counter keepinsync "$DT"; sleep 10; done Look at the replica age: -> p4 -p perforce:1666 counter keepinsync! Mon Mar 28 16:06:12 EDT 2011! -> p4 -p replica1:1666 counter keepinsync! Mon Mar 28 16:06:02 EDT 2011 •  If the replica age goes over a threshold, regenerate the broker config file and alarm the administrator
  • 13. SERVER UNDER MAINTENANCE Additional benefits of p4broker •  If the master server is unavailable, the broker config is regenerated to provide the appropriate message for non- read-only commands •  If no servers are available, the broker config is regenerated to provide a different message (“No servers are available”) instead of not user-friendly “Connection refused”
  • 14. OUR EXPERIENCE WITH LOAD BALANCE What we find useful: •  Monitor the load and collect data even if we don’t need these data right now •  Use replicas to distribute the load •  Maintain the broker config file according to server availability and replica age •  Broker provides transparency and increases the availability of the server
  • 16. CHECKPOINTING Checkpointing causes users to wait •  It’s always too long •  Different ways of creating checkpoints offline •  our old way (using NetApp snapshots): //guest/michael_mirman/snap_checkpoint/snap_checkpoint •  our new way: using metadata replica
  • 17. USING METADATA REPLICA Metadata replica practically does not lag behind the master. •  Settings: -> p4 configure show Replica2 Replica2: monitor = 1 Replica2: server = 1 Replica2: startup.1 = pull -i 4 -J /export/journal/perforce/1666/journal •  Command: p4d –r ROOTDIR –z –jc CKPDIR/perforce.1666 •  Nightly db validation p4d –r ROOTDIR –xv p4d –r ROOTDIR –xx
  • 19. DISASTER RECOVERY PLAN •  Checkpoints and journals are copied to the backup filer immediately after their creation •  Archive is maintained continuously by p4admin_replicate •  Two test servers are used to verify the restore process •  DB is restored from the latest checkpoint + all following journals •  The earliest journal is determined by the time stamp from the first @ex@ record from the checkpoint
  • 20. DISASTER RECOVERY PLAN (continued) •  Test restore process includes p4d –xv p4d –xx p4 verify –qz //… •  Repository is split up and verified in N processes in parallel (example in the public depot: //guest/ michael_mirman/conference2011/pverify)
  • 21. FAIL-OVER PLAN •  No automatic fail-over (conscious decision: assess the situation) •  Use it after rebuilding database on a replica •  Fail-over is accomplished by changing the broker config file •  block write access •  wait for the replication to get the standby to be in sync with the master •  allow write access to the new master
  • 22. MAJOR UPGRADE •  Place all binaries in the right locations and update licenses if necessary •  Reconfigure p4broker to block write access and redirect all read-only requests to a replica •  Wait until the replica is in sync with the master •  Stop the master and all replication processes •  Upgrade the master (p4d -xu) and restart it •  Reconfigure p4broker not to use any replica •  Upgrade and restart every replica •  Restart replication processes •  Reconfigure p4broker to use replicas as usual •  Restarting p4broker and proxies cause short service interruptions, but we don’t always have to do this
  • 24. WHAT WORKED WELL FOR US To increase availability: •  Anycast with multiple proxies – no need to reconfigure clients when infrastructure changes •  High-Availability VM for p4broker •  Maintaining a warm standby replica. To improve load balancing: •  Moving some maintenance procedures to replica servers (our VMs are adequate); •  Creating checkpoints on a replica server and testing them regularly; •  Using p4broker to redirect some load to a replica server.
  • 25. WHAT ELSE WORKED WELL Having test servers with identical or very similar architecture. Replicating data synchronously on replicas and continuously on archive. “Set it and forget it” - Administration is easy when you have automated most functions.
  • 26. THANK YOU! ANY QUESTIONS?