Step 4 of Development Technology Selection
Author: Justin James
Translation: purpleendurer, 2010-10-09, 1st
Category: development and programming
Tags: performance, storage, database, hardware, enterprise software, software, data management
One of my friends is worrying about an upcoming programming project: to improve performance while ensuring the smooth completion of the project. He asked me, "How should I select technology ?" This friend repeatedly wrote code, but he hasn't done any substantive projects yet. He has never focused on any specific technology and does not know how to start this project. Although he tends to deploy Linux based on his previous experience, this is not the final decision.
Here, I will share my suggestions with him. I will not recommend any specific technology, but tell you how I make decisions on technology and architecture.
Step 2: loosely coupled design for Applications
Agile methods have become very popular, and some people think that means you don't try to go beyond a week or two. However, this is extremely valuable in preparing for the application's loosely coupled design. All you need to do is to use a tool with flowcharts (such as Visio) to provide a high-level logical overview. You don't have to go into the details: "verify that this field contains at least five characters" or data layout. However, you need to have a general idea about the processing responsibilities of each component of the application.
Here are some examples of things that should be included in the figure:
▲Any major batch processing task.
▲Data storage (files, databases, "Clouds", etc.) and components that are retrieved and provided to other parts of the application.
▲Important processing appears (in the database, in the business logic layer, web services, clients, etc.) and its role.
Step 2: determine the resource usage and features
Once the logical overview graph is complete, we can use it to determine the resource usage. The resources you need to pay attention to are CPU, memory, hard disk space, and bandwidth. Do you want to transmit a large amount of data to external web services or the opposite? Pay attention to the bandwidth resources connected between applications and services. Maybe your database needs to perform intensive operations internally-pay attention to the CPU usage of the database, and so on.
Step 1: determine the performance critical area
Once you understand the resources you want to use, you will find potential performance bottlenecks. These areas will have the greatest impact on your technical choices. If it turns out that you have little information stored in the database, you have more options for the database. Maybe you want to execute CPU-heavy algorithms on the business logic layer, which indicates that you need to support high-speed computing languages and platforms. The following is my previous chart, which helps you understand how this affects your decision-making.
|
CPU |
Memory |
Disk Space |
Bandwidth |
Database |
The database must be a high-performance system, such as PostgreSQL or Oracle. |
All major databases should have enough memory for use. |
Skip low-end databases with limited sizes, such as SQL Server Express. |
Deploy applications in the IDC where the database is located. |
Business Layer |
The language must be fast and may be well supported by multithreading. |
N/ |
Deploy applications in the same data center to make full use of disk space. |
Deploy applications in the IDC where the database is located. |
APIS provided to the client |
The language must be fast and may be well supported by multithreading. |
N/ |
Rethink your architecture. |
Rethink your strategy. |
Client Software |
The language must be fast and may be well supported by multithreading. |
Carefully consider your target market and customer capabilities. |
Carefully consider your target market and customer capabilities. |
Ensure the bandwidth in the target market (for example, do not sell to consumers in rural areas ). |
Third-party services |
Carefully select suppliers. |
N/ |
Select a low-cost storage vendor. |
Rethink your strategy. |
Step 2: weigh the demand Scale
Another thing you can learn from charts is where your applications need to be weighed. For example, if most of the processing requirements occur on the client of the application, the server architecture can be much looser.
You will also be able to understand the scale you need. Most databases have cluster functions, so if you have a choice, it is usually easier to better balance things (especially if they need to share status between requests) advance to a database that has been expanded, or consider more advanced technologies with built-in clusters or scaling stacks.
Conclusion
With a lightweight logical overview to start the development process of your application, you will choose the best technology that suits your needs in the right way. There are also many non-technical factors (such as your budget, especially technical experience), but you need to start from somewhere, this decision-making process will help you narrow your selection scope, and check the problem in advance.
I'm happy to hear from you in the following message so that you can gain experience related to such problems. (End)
Http://blogs.techrepublic.com.com/programming-and-development? P = 3184 & tag = leftcol; post-3184