Asides
Matraex App Prototype Service
Understanding what an App Prototype is
When you want lean implementation of your app and you want it fast, an app prototype service is right
for you. It comes in at a lower cost compared to traditional app development and provides gives you
something you can present to investors.
Our app prototype service takes your idea and reduced it down to the basic core to create a prototype.
It will include the concepts and ideas that show the value and how your app is unique from others on
the market. The goal of our app prototype service is rapid implementation to get your app idea in hand
faster.
At Matraex Software Development, we’re able to create your app prototype in days instead of months.
Skip the waiting and get your app prototype done faster!
Top Benefits of an App Prototype Service
Developing an app prototype comes with many benefits. Of course, getting it done faster is one of the
benefits, but there are several others including:
Provides a tangible concept you can present to investors
Allows you to see your app in action at the smallest investment possible
You gain an idea to show off to your customers
Helps to validate an early concept
Test usability and identify issues
Allows for a more efficient app design
There are many other benefits that come along with an app prototyping service. If you’re looking for a
faster way to see your idea come to life, our app prototype service is the right choice for you.
App Prototype Discovery Session
This is where it all starts. At Matraex, we want to gain a full understanding of your custom app concept,
so we start with a discovery session. During this session, we gain an overview of the idea and concepts
from you and begin the discussion about the custom features for your app. A priority is placed on the
features most important to you and the value the app will provide.
When the app is a good fit for us and we are a good fit for you, the discovery session will lead to a
commitment document with a proposal for you from us. This document will provide the details of the
features we will deliver in your app prototype, along with our commitment to you and our money-back
guarantee.
The app discovery session begins with a simple app survey. This survey offers a few quick questions to
help give us a start on what you’re looking for and your app idea.
Our Simple & Fast Process
When you choose to work with Matraex, you will go through our very simple and fast app prototype
process. This process includes:
1. Discovery Session
2. Defining the prototype and providing a schedule commitment
3. Review and approval
4. Beginning the High-Intensity Development Sprint
5. App development, delivery, and feedback between three and six times
6. Completed app prototype delivered
7. App review session
8. App commitment review session
App Prototype Service FAQs
Is it really possible to have an app on my smartphone in just 3 days?
Yes, with our ability to use Test Flight on Apple, or with an APK file for Android, we can have an app
prototype on your phone in just three days.
What is the cost of the app prototype service?
We charge a flat rate of $10,000 for our app prototype service. Full custom app development can cost
tens of thousands, if not millions of dollars. By limiting the features and providing a scaled-down app
prototype, we control our costs.
How are you able to create an app prototype so fast?
With our in-house prototyping tools and prototype services, we are able to create new app prototypes
very fast. We have API tools and existing accounts setups ready to go with your idea. Since our team is
familiar with all the tools we use, it makes going from concept to prototype much faster for us.
What type of app prototypes do you build?
The majority of the apps we create focus on business, productivity, and utility. Not every app will exactly
match one of these categories and we might be able to build your app prototype if it doesn’t match
perfectly.
Do you build games?
No, we do not build games.
Can you prototype with an app purchase?
Yes, we have a system in place to make it very easy to set up in-app purchases very quickly. This is one
of the longest delays when developing an app. It can take a long time to get your account set up in the
App Store and start receiving funs. We will discuss with you what makes the most sense.
Did You Spend Too Much Time or Money Building Your App?
Traditional app development may cost tens of thousands of dollars. Some apps cost millions to develop.
If you have an idea for an app, you might not have this type of cash to invest upfront for full app
development.
You can spend too much money or time building your app only to find out there’s no market for it.
Maybe you already went through the process and you’re finding out now that you spent too much time
or money building your app.
What’s a normal amount of money to spend building an app?
The amount of money you will spend to build an app will depend on the type of app, the platforms it’s
built for, the design, and a few other factors. The average cost to develop an app will range from about
$38,000 to $170,000. However, it can reach as much as a half-million and even go into the million-dollar
range.
The type of app will play a factor with IoT or wearable applications having the highest cost. M-
commerce apps can also be rather expensive, along with Enterprise mobile apps. Depending on the type
of app you plan to develop, the team you choose for development, and the overall design, your costs
can range quite a bit from just under $40K to more than $1 million.
What’s a common amount of time to spend building an app?
Just as the cost to develop an app can range quite a bit, so can the amount of time it takes to develop
the app. The amount of time will depend on the design of the app and the team you choose to develop
the app.
For most apps, it will take between four and six months with some taking longer and some not quite as
long. A small percentage of apps will take more than 10 months to develop.
Did you spend too much time or money developing your app?
This isn’t the easiest question to answer and it really depends on what your goal was and how the
process went for you. If your app was rather simple, yet took several months to develop, it might have
cost you too much time and money.
However, if you took on investors, developed the app, and found out it’s hard to make any money from
it, you probably spend too much time and money on the app.
How can you keep the cost and the time investment down when developing a new app?
Maybe you’re ready to try again with a different app idea or maybe you just want to avoid spending too
much time and money on the idea without proof of concept. If you’re working with a limited budget and
you need an app developed fast, our app prototype service is the right choice for you.
With an app prototype, you get a scaled-down version of your app idea created quickly to present to
investors and customers. It will allow you to see your concept working on an actual smartphone before
deciding to invest any more time or money into the idea.
Our team develops app prototypes for a fraction of the cost compared to full app development. We get
a working app on your phone very fast and you will have something tangible to present to investors and
customers in two weeks.
Compared to investing months of time and tens of thousands or maybe hundreds of thousands of
dollars, developing an app prototype is a better solution. You will be able to see your app working and
gain proof of concept before making the mistake of investing too much time or money into an app idea.
Understanding App Prototyping for Beginners
You’re brand new to the app development game and you’ve heard of app prototyping, but you’re not sure what it is. Maybe you’ve figured out that the app development process can become very costly. App prototyping is a more affordable way to see what your app will look like and how it will function.
If you’re not sure what app prototyping is or how it works, the following guide will help you better understand this concept.
A Cost-Efficient Way to Test Your Ideas
Developing an app from beginning to end is very costly. However, when you use app prototyping, you’ll gain access to a cost-efficient way to test out your ideas before fully developing or launching your app.
When you want to develop an app that millions of customers will use, app prototyping is a great place to start. It can act as a springboard into full development while giving you the ability to attract the right investors during the funding stages of your business.
Prototyping isn’t a new concept. Inventors and product creators have used prototyping for many decades. App prototyping, however, is a bit of a newer concept, but it works in a very similar way.
Before you commit to fully developing your app, prototyping allows you to see how it will look and function. You can make adjustments to your ideas early in the process instead of waiting until the final stages.
Top 5 Benefits of App Prototyping
1. Save Money
Instead of creating a fully developed app, with app prototyping, you’ll be creating a “ready-to-code” mockup of your app. This helps save money as you won’t need to go through full development stages until the ideas behind the app have been fully vetted and tested.
2. Ability to Quickly Share Your Concept
Developing an app takes time. With prototyping, you can quickly get a tangible mockup ready to share with co-founders, test groups, and investors.
3. Gain Customer Feedback
You don’t have to wait until you’ve launched your app to gain feedback from customers. With app prototyping, you’ll be able to gather feedback by sharing the prototype before you go into full development stages.
4. More Time for Changes
The prototyping stage allows you to make changes without spending as much money or wasting as much time. Since it’s just a mockup of the app, you can test it out, analyze it, refine it, and repeat the process.
5. Better Final Product
Since you will be able to go through the testing phase a few times, you can create a better final product. When you present a mockup to investors and customers, they might have valuable input to help you make adjustments.
When you’re new to app development, prototyping offers a great solution. It’s the best way to see your ideas come to life at the lowest cost. Once you have your app ready to be fully developed, you’ll have a tangible mockup to present to potential investors for additional funding.
If you’re looking for a way to see your ideas developed into a functioning app quickly, app prototyping is the right option. It’s faster and more affordable than full app development, but it can also springboard your app into full development when the time is right.
Use App Prototyping to Impress Investors
Pitching an idea to investors isn’t easy. Some investors want to see sales, while others struggle to grasp your concepts. With app prototyping, you can provide a tangible mockup to help investors grasp what you’re trying to accomplish.
You might think it’s enough to just create a few sketches or even a PowerPoint presentation. Sure, this might work, but it won’t have the effect an app prototype will have. Here are a few ways using app prototyping will help you impress investors.
Sets You Apart from the Competition
Investors see multiple pitches every month. You’re not the only one with an idea for an app or a startup company. They want to invest in the best ideas and the most promising companies.
If you’re trying to secure funding, an app prototype will help set you apart from the competition. Instead of just being another entrepreneur pitching the “next big thing” you’ll have something tangible investors can see in action.
While all the entrepreneurs pitching the investors will have a business plan, projections, and maybe a few sketches for their app, you’ll have a prototype. This will set you apart and help you gain the funding you need to complete your app and move into full development.
Shows you Have Skin in the Game
If you funded your app prototype yourself or you had to pitch your idea to investors to find funding, it shows you have skin in the game. Investors like to know you’ve put up the money and you’ve taken on the risk, too.
When they choose to invest in your idea, they will be taking on a big risk. They are betting on you, and if you don’t have any skin in the game, it makes it harder for investors to bet on you.
You can Better Show Off Your Vision
Have you ever had a conversation with someone and you just couldn’t figure out what they were trying to explain to you? When you have an idea and it’s hard to show it through sketches and a presentation, an app prototype helps.
You can show off your vision better with a prototype because it will be a functioning mockup of the final product. However, there’s still room to make adjustments to your app before it’s fully developed. As you show off your vision, investors will be able to provide feedback, which makes it even better for you and the investors.
Sometimes, it can be difficult to get other people to grasp your idea. When you need investors to quickly understand what you’re trying to do with our app, you need a prototype.
Investors didn’t come up with the idea like you did. They don’t understand the idea you have and it’s your job to show them how you’re trying to solve a problem and why it works.
When you choose app prototyping, you’ll gain a tangible mockup you can use to impress investors. You’ll stand out from the crowd of entrepreneurs and you’ll be able to bring your vision to life.
What are the Benefits of App Prototyping?
App prototyping offers plenty of benefits compared to full app development. It’s a great way to get your ideas from paper to a functioning mockup.
The phrase, “a picture is worth a thousand words” is an apt analogy to comparing an app prototype to the idea you have for an app. When you create a prototype, it helps bring the idea to life. Let’s look at some of the core benefits of app prototyping.
6 Benefits of App Prototyping
1. Highly Cost-Effective
Compared to developing your app completely, app prototyping is a much cheaper option. It’s cost-effective because you gain a working mockup to help show off the idea without investing in complete app development.
Whether you’re starting a new business or trying to create an app for your existing business, investing in app prototyping offers a less expensive solution.
2. More Clarity
You might have an idea for an app, but you’re not sure how it will work or look. With app prototyping, you get the ability to see your app function and gain clarity throughout the process. It works as the ultimate visual aid to help you gain feedback from others and make adjustments to the design and functionality.
3. Gain Feedback
It’s hard to send a sketch to someone and get their feedback on an app. Sure, they might be able to give you some pointers on the colors or the design, but they cannot see any functionality or see the app on an actual screen.
When you create a prototype of your app, you can gain feedback from potential investors and customers. This feedback can be priceless as it can help you make changes to better suit your target market.
4. Perfect the Design before Development
When you choose app prototyping, you get the ability to test, analyze, adjust, and repeat multiple times. You can try out different functions and figure out what works best for the end-user.
Instead of launching an app and releasing update after update, you can fix issues and adjust functionality during the prototyping stage.
5. Provide Something Tangible for Investors
It’s hard enough to gain funding when you cannot show sales yet. Investors need to understand your idea and how it works to solve a problem or provide convenience.
With app prototyping, you’ll be able to provide something tangible for investors. They can see how the app works and what to expect with the end results once the app is developed.
6. Validate the User Experience
One of the most important factors for any app is the user experience. Without a working mockup, it’s hard to validate the user experience. App prototyping allows you to find out if your app provides a good user experience or needs some work.
When you choose app prototyping instead of full app development, you gain access to a more cost-efficient way to bring your idea to life. Many benefits come with creating a prototype first and developing the app later. These are just a few of the core benefits you’ll gain from the app prototyping process.
3 Reasons Mobile App Developers Need Prototypes
It all starts with an idea for mobile app developers. The idea is the beginning of the journey towards watching an app become functional and solve a problem for the end-user.
As you go through the development phases, you’ll need to take your idea and bring it to life. This means figuring out how the app will look, feel, and function. With app prototyping, you gain a better, more cost-effective solution to bring your idea to life.
There are many reasons why mobile app developers need prototypes. Let’s look at a few of the most common reasons.
Saves Time and Money
The biggest reason anybody chooses to do something is to save time or save money, especially when developing a new idea. App prototyping helps with both. You will be able to bring your idea to life without going through the full development, which takes up time and costs money.
Consider the worst-case scenario. You hire a full app development team and they work around the clock to bring your vision to life. Then, once the app is completed, you realize the design isn’t as appealing as you hoped or it simply doesn’t work as you have envisioned. Now, you have to go back and fix things, which cost more money and more time.
With app prototyping, you can see your idea come to life for a lower cost and it will be completed much faster. Once you see the app and the functionality, it’s much easier to make changes before you launch the app to the public.
Provides a Way to Vet the Idea First
You’ll gain a better way to fully vet your idea before sending it into the expensive and time-consuming development phases with app prototyping. Instead of releasing updates after you’ve launched, you’ll be able to avoid costly issues and fix problems early on.
Prototypes can be tested and adjusted multiple times before being fully developed. You don’t have to go into the coding stages before you see how things will work and look. This means you get to vet your app before it’s ever really created.
Gain Incredible Feedback
If you want to know what potential customers and investors will think before spending the money to fully develop your app, a prototype is for you. With an app prototype, you can gain feedback from your target market and potential investors, which can be invaluable.
Some investors might have contingencies, which include specific changes they believe will benefit the performance of your finished app. If you’ve already developed the app, these changes can be very expensive and time-consuming to make. With a prototype, you’ll likely be more open to the feedback of investors and potential customers since the changes will only incur minimal costs.
There are several reasons why mobile app developers need prototypes. These three reasons are just a few of the main ones. You will also gain many benefits and the ability to see your idea come to life without fully investing in the entire development of an app.
App Prototyping vs. Full App Development
When it’s time to create an app for your startup business or for an existing business, app prototyping offers an excellent starting point. The prototyping stage allows you to make changes before you get to the final stages of full app development.
It’s important to compare app prototyping and full app development before you move forward. Developing your app won’t be cheap and you want to make sure you invest your funds wisely. Let’s look at app prototyping vs. full app development to make it a bit easier to see the differences.
What is App Prototyping?
Taking an idea for an app and showing its value can be done with app prototyping. It gives you a clean tool to use when pitching investors without a completed final product.
App prototyping is basically a model of the app you want to create. It gives you the ability to test the app before you spend time and money on full app development. Many companies use app prototyping to show interested investors the concepts and ideas before complete development.
When you choose app prototyping, the cost will be lower and you will be able to see the functionality of the app. This stage in development allows for changes to the design, the functionality, and pretty much anything else involved with the app. It takes your idea from a sketch on paper to an actual visualization of the app complete with functionality through a working layout and design.
What is Full App Development?
When you choose full app development, you might have already gone through the prototyping stage in development. If not, you will likely be hiring a team of developers and going through the phases of developing, testing, and launching your app.
This is great if you already know what you want and you have the funds to support full app development. However, if your app is simply an idea and needs to be tweaked along the way, app prototyping offers a less expensive way to get a functioning prototype ready.
Benefits of App Prototyping
1. Very Cost-Efficient
When you start your project with app prototyping, you’ll be using a more cost-efficient option. The process gives you the ability to solve problems during the beginning stages of the process instead of waiting until the end.
It’s easier and less costly to make changes during the testing phase compared to making changes to a nearly finished product.
2. Ability to Pitch Investors
Maybe you have an idea, but you need funding. Using app prototyping allows you to create something you can show potential investors before going through the more expensive full app development process.
3. Exploration and Improvement
When you develop an app, you might find ways it can work better or you might want to change the functionality along the way. App prototyping offers an easier way to make changes throughout development before you’ve paid for a nearly complete app.
When looking at app prototyping vs full app development, for many, app prototyping offers a better option. You likely have the goal of developing a completed app, which app prototyping can lead to. However, starting with a cost-efficient solution like app prototyping offers a better solution for most companies looking to develop a new app.
5 Types of Application Design
5 Types of Web Application Development Programs
Shopping Applications
Portal Application
Dynamic Applications
Animation Applications
Static Applications
AWS RDS SSL/TLS Certificate Upgrade
It is best to start the certificate upgrade process by first testing it on a copy of the database to ensure that if there is an issue it will not effect live users.
The creation of a copy of the RDS database and Upgrade for the certificate process for the database on AWS is as follows:
Step 1. Overview: Download the root certificate and move it to your application and then setup a script on your live server to test the connection to a test instance of the RDS DB without effecting end users. (Instructions for this section are for php but you could use other languages to achieve the same thing.)
Download the root cert that works for all AWS Regions from https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html
Under the heading Using SSL/TLS to Encrypt a Connection to a DB Instance click on the link https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem (Only Download the Intermediate certificate for the region where the servers are located if the previous chain certificate does not work. Make sure to choose from the column with the newest cert.)
Use filezilla or some other method of moving the certificate to the development server. On one server we moved the certificate to /etc/ssl/certs/ and on another we moved it to /data/webs/[base file for site]/certs/.
(The following instructions were for a server using opsworks where we have dynamic scripts setup to create files on the instances through a deployment to a specific stack. If you are not using opsworks you could just move the file strait to your production server in the correct location and setup the permissions manually.)
OPSWorks Server: Modify the build scrip for the apache recipe to grab the version of the file on the development server, recreate it, and put it on the aws server in the right location.
We added a section to the file like the following:
file ‘/etc/ssl/certs/rds-ca-2019-root.pem’ do
content <<-EOH<?=file_get_contents(“/etc/ssl/certs/rds-ca-2019-root.pem”)?>
EOH
mode ‘0644’
owner ‘root’
group ‘root’
end
Run the build script from the custom developer opsworks area and verify the file shows up in the body of the apabche.rb recipe. Then deploy the recipe so it will be ran on the production stack on aws and create the file in the correct location. Go on one of the instances on the production stack and verify the file has been created.
(End of OPSWORKS Server specific section.)
Modify your database connection for your site (ours was in a specific function controlling the connection and making it available to the rest of our pages) to change the connection string for a certificate requirement.
Mysql database specific section:
For mysql databases we modified the line:
$dblink = mysqli_connect($server, $user, $pass);
To instead use:
$certpath=trim($_SERVER[‘DOCUMENT_ROOT’].’/certs/rds-ca-2019-root.pem’);
$dblink = mysqli_init();
$dblink->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
$dblink->ssl_set(NULL, NULL, $certpath, NULL, NULL);
$dblink->real_connect($server, $user, $pass, $name);
We first left this new section of code commented out and modified our db_connect_single function so we could include a global variable testcertrequirements that was an array containing certpath and host. If this global variable was set we would use the data to override the default connection data so we could test the connection with a developer user without causing issues for our other users on the system. This is a snippet of the code for the connection function: (d function calls just display info for developers)
function db_connect_single($name, $user, $pass, $server='')
{
global $testcertrequirements;
if($_GET[debug]||$_GET[db_connect_debug])
d("db_connect_single($name, $user, $pass, $server='')");
if(!$server)
$server='localhost';
if (defined("ENVIRONMENT_CURRENT"))
$currentenv=ENVIRONMENT_CURRENT;
if (
(strtolower($currentenv)=='prod')
&& $testcertrequirements
&& is_array($testcertrequirements)
&& trim($testcertrequirements['host'])
&& trim($testcertrequirements['certpath'])
&& file_exists(trim($testcertrequirements['certpath']))
) //Method for testing new certificate requirements without effecting current users on AWS.
{
$server=trim($testcertrequirements['host']); //AWS end point for new test db instance spun up from snapshot in RDS and that is setup with the new certificate.
d('$testcertrequirements[certpath]',trim($testcertrequirements['certpath']));
d('$server',$server);
$dblink = mysqli_init();
$dblink->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
$dblink->ssl_set(NULL, NULL, trim($testcertrequirements['certpath']), NULL, NULL);
$dblink->real_connect($server, $user, $pass, $name);
}
/*
elseif(strtolower($currentenv)=='prod') //Default on aws is to use new cert since db updated to new cert.
{
$certpath=trim($_SERVER['DOCUMENT_ROOT'].'/certs/rds-ca-2019-root.pem');
$dblink = mysqli_init();
$dblink->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
$dblink->ssl_set(NULL, NULL, $certpath, NULL, NULL);
$dblink->real_connect($server, $user, $pass, $name);
}
*/
else
{
if($testcertrequirements)
{
d('<span style="color:red">DID NOT USE TEST CERT REQUIREMENT FOR CONNECTION</span>');
d('using default connection and not dynamic one.');
d('$currentenv',$currentenv);
d('connecting using server:'.$server.' and not test certificate requirement');
d('$testcertrequirements',$testcertrequirements);
if(!file_exists(trim($testcertrequirements['certpath'])))
d('Missing cert file:',trim($testcertrequirements['certpath']));
}
$dblink = mysqli_connect($server, $user, $pass);
}
(End Mysql specific section)
Postgresql database specific section:
For postgresql databases we modified the lines:
$con_str = “host=$hostname port=$port dbname=$dbname user=$user password=”.$password;
timetrack(db_connect, $con_str);
$dbconn = pg_connect($con_str);
To instead use:
$addcertrequirement=””;
if(is_aws())
$addcertrequirement=” sslmode=’verify-full’ sslrootcert=’/etc/ssl/certs/rds-ca-2019-root.pem'”;
$con_str = “host=$hostname port=$port dbname=$dbname user=$user password=”.$password.$addcertrequirement;
$dbconn = pg_connect($con_str);
We first left this new section of code commented out and modified our db_connect function so we could include a global variable testcertrequirements that was an array containing certpath and host. If this global variable was set we would use the data to override the default connection data so we could test the connection with a developer user without causing issues for our other users on the system. This is a snippet of the code for the connection function: (d function calls just display info for developers)
global $testcertrequirements;
$addcertrequirement="";
/*
if(is_aws())
$addcertrequirement=" sslmode='verify-full' sslrootcert='/etc/ssl/certs/rds-ca-2019-root.pem'";
*/
if($testcertrequirements && is_array($testcertrequirements) && trim($testcertrequirements['host']) && trim($testcertrequirements['certpath'])) //Method for testing new certificate requirements without effecting current users on AWS.
{
d('$testcertrequirements',$testcertrequirements);
$addcertrequirement=" sslmode='verify-full' sslrootcert='".$testcertrequirements['certpath']."'";
if(!is_aws())
$addcertrequirement=" sslmode='prefer' sslrootcert='".$testcertrequirements['certpath']."'";
else
$hostname=trim($testcertrequirements['host']); //AWS end point for new test db instance spun up from snapshot in RDS and tht is setup with the new certificate.
d('$addcertrequirement',$addcertrequirement);
d('$hostname',$hostname);
}
//decide which server to connect to based on the environment
$con_str = "host=$hostname port=$port dbname=$dbname user=$user password=".$password.$addcertrequirement;
timetrack(db_connect, $con_str);
$dbconn = pg_connect($con_str); //@pg_connect($con_str); use the @ to fix any errors
(End Postgresql specific section)
After setting up the database connection functions created a file to be able to setup and test the connection as a specific user on production without effecting all the other users on the system. Code snippet for our test file:
global $testcertrequirements;
$testcertrequirements=array();
if($_POST['testconnection'])
{
if(!trim($_POST['host']))
set_message('A hostname is requried to test the connection','error');
if(!trim($_POST['certpath']))
set_message('A path including the filename to the new certificate is required to test the connection with the new certificate','error');
if(!has_message('error'))
{
$testcertrequirements['host']=$_POST['host'];
$testcertrequirements['certpath']=$_POST['certpath'];
d('$testcertrequirements',$testcertrequirements);
db_connect();
$sql="[ADD AN SQL SELECT STATEMENT HERE FOR A CORE DATABASE TABLE THAT CONTAINS INFORMATION IN YOUR DATABASE]
";
$logingcheckqry=db_query($sql);
d('$logingcheck sql',$sql);
d('$logingcheckqry',$logingcheckqry);
if($logingcheckqry)
set_message('Connection appears to be successful','success');
}
$testcertrequirements=array();
db_connect(); //Changing back connection to default for sql in footer.
}
display_messages('error');
$defaulttesthost=config_var('dbserver'); //Testing db instance endpoint already setup for new certificate.
if($defaulttesthost && !trim($_POST['host']))
$_POST['host']=$defaulttesthost;
$defaulttestcertpath='/etc/ssl/certs/rds-ca-2019-root.pem';
if($defaulttestcertpath && !trim($_POST['certpath']))
$_POST['certpath']=$defaulttestcertpath;
d('post',$_POST);
?>
<h3>
Test New DB Certificate for SSL
</h3>
<form id="testnewcertconnection" method="POST" enctype="multipart/form-data">
<table style='width:25%'>
<tr>
<td>
Host
</td>
<td>
<input type='text' name='host' id='host' value='<?=$_POST['host']?>' />
</td>
</tr>
<tr class='bgmint'>
<td>
Certificate Path
</td>
<td>
<input style='width:95%' type='text' name='certpath' id='certpath' value='<?=$_POST['certpath']?>' />
</td>
</tr>
<tr>
<td colspan=2>
<input type="submit" value="Test Connection" name="testconnection">
</td>
</tr>
</table>
</form>
<?
include_once('footer.php');
Next migrate this code for the database connection and run the test file on the production site with the existing production db to verify you can select data from the database. This will showed that the test file and the connection is setup correctly.
Step 2. Overview: Create a new instance of the existing database from a snapshot to test the upgrade process so you can verify it works on a clone of the existing database with the same data.
Start by logging into the AWS Console then clicking on Services>Database> RDS>Snapshots.
Choose the newest snapshot or create a new snapshot of the database and choose it. Copy the KMS key ID from the snapshot details page and also make a note of the DB Storage. Click Actions> Restore Snapshot.
Select the DB Instance Class that most closely resembles the DB Storage you noted earlier for the existing snapshot of the database. Type in a DB Instance Identifier (Identifier for the new database) like Test-DB-Cert-Upgrade.
Under Encryption Click on Master Key and select enter a key ARN. (If there is no key already shown.) Use the key from the details for the existing database. So if the key from the snapshot was efLR5721-a243-4067-bb80-fbecd491dec0 and the region was us-west-2 the key ARN would be:
arn:aws:kms:us-west-2:[put your console login key here]:key/efLR5721-a243-4067-bb80-fbecd491dec0
All the other options you should be able to leave the same. Next Click restore DB Instance. Once the new instance from the snapshot is created then click on Databases from the main menu. Click on the main instance you just made and make a note of the end point for this test database.
If you have custom Network Security groups you will need to update them now on the database or you may not be able to connect to the new test database instance. Start a timer so you can get an estimate on how long the upgrade process will take. Click Modify and in the Network & Security section Click on the drop down for the security group and choose your custom group. In this same section set the Certificate authority drop down to the new certificate (In our case it was rds-ca-2019). Click Continue and select the radio button for the option to apply the changes now (Apply Immediately) and then run the modification.
Step 3. Overview: Test the connection to the db using the test script and then schedule down time with the client and upgrade the actual server.
Run the test file on the production server selecting the end point for the new test database as the host and the current path. Verify the connection works for the test db and stop the timer started in step 2 to give you an idea of how long the upgrade process and test will take. Once the test was successful then set up a time to do the update with client and delete the test instance of the database. (For us we scheduled around 30 mins and it usually took around 10 for the whole process. We already had a method for showing a downtime message on the site while it would be down.)
During the time scheduled with the client put up the site down message and migrate it to production. In the AWS console click Modify and in the Network & Security section Click on the Certificate authority drop down and set it to the new certificate (In our case it was rds-ca-2019). Click Continue and select the radio button for the option to apply the changes now (Apply Immediately) and then run the modification. (This usually takes less than a minute.)
Use the test file to verify the connection using the end point for the production database as the host and the certificate path. Once testing is successful go into the db connect function and remove the commented section so the default connection to the server will use the new certificate. Migrate this change to production and verify the connection is still working and pulling data from the existing database using the certificate. Remove the site down message and migrate it to production, verify the site down message no longer displays, and you should be finished.
Sending Email on Servers on AWS (SES)
Sending email from PHP is often automatic and simple if setup on a traditional hosting account – however the mail() function in PHP does not work on AWS EC2 servers. AWS requires that you use the SES service. (Simple Email Service).
There are several tutorials that walk you through getting your account setup
To send email FROM your email domains you will need to setup and authorize the domain (See TIP #1 below)
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domains.html
The step that is often missed is that outgoing email in new accounts is allowed ONLY to the email addresses you verify – to verify individual emails addresses.
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html
To enable your account to send email from your verified domains, and to ANY email address, you will need to get the account removed from the sandbox mode (check the Email Sending -> Sending Statistics page for a message) Click the ‘Request a Sending Limit Increase’ button to ask to remove the account from the sandbox. (here is a tutorial –
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html )
TIP #1: I would suggest using route 53 for DNS for your domains, as it is a simple couple button clicks to authorize the domains, and get DKIM setup
TIP #2: make sure that you have posted a privacy policy or an email policy on your site – which explains how you send emails and handle their email information. Include a link to your policy in your request for removal from the sandbox.