{"version":3,"file":"_page.svelte-aec8d517.js","sources":["../../../../../../../../src/routes/mobile-app-architecture/+page.svelte"],"sourcesContent":["\n\n\n\t{seo.title}\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\n\t\n\n\n
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t

Mobile Application Architecture: Best Practices

\n\t\t\t\t

Published: {publishedDate} · 10 mins read

\n\t\t\t
\n\t\t
\n\t\t\n\t\t\n\n\t\t\n\t\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t

\n\t\t\t\t\tUsually, the architecture of mobile apps is the last thing that clients want to discuss with\n\t\t\t\t\ta development team. Most of them believe that features\n\t\t\t\t\tand tech stack must get much more attention than processes that take place behind the\n\t\t\t\t\tscenes. But the reality is different. Even the solutions that offer great functionality and\n\t\t\t\t\tare built with state-of-the-art technologies can ultimately fail because the quality of\n\t\t\t\t\ttheir mobile app architecture is low.\n\t\t\t\t\t

\n\t\t\t\t\tWe created this comprehensive guide to explain what a\n\t\t\t\t\tmobile app development architecture is\n\t\t\t\t\tin layman’s terms. No matter what kind of application you plan to build, the information below\n\t\t\t\t\twill help you avoid major mistakes when creating your future solution.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

What is mobile app architecture?

\n\t\t\t\t

\n\t\t\t\t\tSimply put, mobile application architecture is a structure of a mobile solution that shows\n\t\t\t\t\ttwo things: from what elements and how a product is composed. Since an architecture covers\n\t\t\t\t\tevery definitive element of an app, you can think of it as a high-level technical blueprint.\n\t\t\t\t\tIn most cases, an architecture for mobile app development project includes:\n\t\t\t\t

\n\t\t\t\t
    \n\t\t\t\t\t
  • Dataflow (i.e., how data should move within an app)
  • \n\t\t\t\t\t
  • UX design (i.e., how users will interact with an app)
  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\tOS platform (i.e., iOS mobile app architecture, Android mobile app architecture, or other)\n\t\t\t\t\t
  • \n\t\t\t\t\t
  • Tech stack (depends on the platform and the client’s requirements)
  • \n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tIdeally, a mobile app architecture diagram for both Android and iOS should demonstrate not\n\t\t\t\t\tonly the combination of the solution’s core components but also their behavior within an\n\t\t\t\t\tapp’s ecosystem. This helps programmers identify issues in a product vision at the planning\n\t\t\t\t\tstage of development and get rid of them before the first line of code is written.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

Key elements of mobile application architecture

\n\t\t\t\t

\n\t\t\t\t\tEvery product is unique, and so should be its mobile app architecture design. But, in\n\t\t\t\t\tgeneral, most solutions consist of three fundamental layers. See a mobile app architecture\n\t\t\t\t\tdiagram below.\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t

Presentation layer

\n\t\t\t\t

\n\t\t\t\t\tThis layer comprises all the technical details related to user interaction with a mobile\n\t\t\t\t\tapplication. To build it right, a development team should use findings from market research.\n\t\t\t\t\tProgrammers and UX designers have to study the needs and wants of an app’s target audience\n\t\t\t\t\tto adjust the way the data is presented to user expectations. Besides, software engineers\n\t\t\t\t\tshould take into account the main idea behind an application to make sure that the core\n\t\t\t\t\tfeatures are primarily focused.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

Business layer

\n\t\t\t\t

\n\t\t\t\t\tThe business layer of a mobile app architecture represents the business logic of a product.\n\t\t\t\t\tIt shows how an application manages different tasks, for example, validation, caching, and\n\t\t\t\t\tdata transformation. In other words, a business layer is a solution’s facade that hides\n\t\t\t\t\tworkflow, components, and entities under its hood and defines how different elements are\n\t\t\t\t\tconnected with each other.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

Data access layer

\n\t\t\t\t

\n\t\t\t\t\tThe data layer is the most foundational level in a mobile app architecture design. It\n\t\t\t\t\tdefines how the data is maintained and ensures that all transactions are secure. The most\n\t\t\t\t\tchallenging task for a development team at this point is to create high-quality patterns for\n\t\t\t\t\tthe core operations. Such patterns have to offer flawless work of an app but, at the same\n\t\t\t\t\ttime, be flexible enough to allow for easy modification of a solution. User expectations\n\t\t\t\t\twill most likely change over time, so you have to be ready to adjust your product\n\t\t\t\t\taccordingly.\n\t\t\t\t\t

\n\t\t\t\t\tEach layer is designed and built by different professionals. For example, UX designers and front-end\n\t\t\t\t\tdevelopers are responsible for a presentation layer, while back-end programmers normally create\n\t\t\t\t\ta data access layer. However, it’s the task of a team to make all elements of a mobile app architecture\n\t\t\t\t\twork smoothly together.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

Why a mobile architecture cannot be overlooked

\n\t\t\t\t

\n\t\t\t\t\tDesigning a mobile application architecture should be a mandatory step in all projects aimed\n\t\t\t\t\tat building Android and iOS digital products. But, in most cases, it isn’t paid its fair\n\t\t\t\t\tshare of attention. Many clients and even some unprofessional programmers think that\n\t\t\t\t\tcreating a mobile app architecture is just an element of burdensome bureaucracy that slows\n\t\t\t\t\tdown a development process and brings no benefits. But is it true? Absolutely, no! Here are\n\t\t\t\t\tjust some problems that may occur when a mobile app architecture is ignored:\n\t\t\t\t

\n\t\t\t\t
    \n\t\t\t\t\t
  • system errors
  • \n\t\t\t\t\t
  • difficult maintenance in the future
  • \n\t\t\t\t\t
  • lower code readability
  • \n\t\t\t\t\t
  • hard testing and refactoring
  • \n\t\t\t\t\t
  • insufficient scalability potential
  • \n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tDeveloping a mobile app without creating an architecture first is like building a house without a technical drawing, and an\n\t\t\t\t\tapplication modernization service provider\n\t\t\t\t\tcan ensure that the right blueprint is in place for future scalability and upgrades. Yes, it can save you a lot of time. But is the speed worth it? We\n\t\t\t\t\tbet you know the right answer to this question.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

How to make an excellent mobile app architecture

\n\t\t\t\t

\n\t\t\t\t\tOf course, all clients want to develop the best mobile app architecture for their digital\n\t\t\t\t\tproducts. While the architecture quality depends on many factors, there are some things that\n\t\t\t\t\tcan greatly improve the results in a majority of cases. Here is a checklist of points that\n\t\t\t\t\tyou have to consider.\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t

Device type

\n\t\t\t\t

\n\t\t\t\t\tThe parameters of mobile devices impact the way your app will operate. That’s why a\n\t\t\t\t\tdevelopment team has to anticipate how your digital product will look and work on each\n\t\t\t\t\ttargeted screen. Programmers also should take into account the CPU characteristics, the\n\t\t\t\t\tamount of available memory, storage capacity, and other essential aspects of all or at least\n\t\t\t\t\tthe most popular phone models your app is planned to work on.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

Bandwidth scenarios

\n\t\t\t\t

\n\t\t\t\t\tThe quality of the internet connection is another crucial aspect to factor in when creating\n\t\t\t\t\ta mobile application architecture. Although no one can predict the availability of the\n\t\t\t\t\tinternet network in each targeted region, it’s possible to prepare your solution for the\n\t\t\t\t\tworst possible scenario. If you do so, a user experience won’t be compromised even when the\n\t\t\t\t\tinternet speed is limited.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

Navigation method

\n\t\t\t\t

\n\t\t\t\t\tPicking a suitable navigation method is important since it impacts user experience and links\n\t\t\t\t\ttwo building blocks of a mobile solution: a client side and a server side. The good news is\n\t\t\t\t\tthat there are numerous options to choose from. On the flip side, such a wide range of\n\t\t\t\t\tnavigation methods can sometimes be frustrating.\n\t\t\t\t\t

\n\t\t\t\t\tIn particular, it’s not always a nice idea to go for something completely offbeat when it comes\n\t\t\t\t\tto navigation because users can simply get lost. Opting for one of these five most popular methods\n\t\t\t\t\tis usually a much safer path:\n\t\t\t\t

\n\t\t\t\t
    \n\t\t\t\t\t
  • Single view
  • \n\t\t\t\t\t
  • Tab controller
  • \n\t\t\t\t\t
  • Stacked navigation bar
  • \n\t\t\t\t\t
  • Modular controller
  • \n\t\t\t\t\t
  • Modular controller
  • \n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tTo make the right decision, we recommend studying your target audience, their online habits,\n\t\t\t\t\tand behavior.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

User interface

\n\t\t\t\t

\n\t\t\t\t\tFor end-users, a user interface is a key component of the presentation layer and a mobile\n\t\t\t\t\tarchitecture in general since it allows them to interact with your product. That’s why a UI\n\t\t\t\t\tdesign should be understandable and consistent across the application. Even if your solution\n\t\t\t\t\thas complex functionality, there should be no unnecessary noise. App designers have to put\n\t\t\t\t\tthemselves in users’ shoes and think about how to make a product both engaging and\n\t\t\t\t\teasy-to-use.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

Mobile app arthitecture patterns

\n\t\t\t\t

\n\t\t\t\t\tDepending on the criteria, the patterns of a mobile app architecture can be divided into\n\t\t\t\t\tnumerous types. We’ll describe the most fundamental of them: monolithic architecture and\n\t\t\t\t\tmicroservice architecture.\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t

Monolithic architecture of mobile apps

\n\t\t\t\t

\n\t\t\t\t\tThe monolithic architecture is considered a more traditional approach to mobile app\n\t\t\t\t\tdevelopment. Yet, it is rarely used today since the monolithic structure has a lot of major\n\t\t\t\t\tdrawbacks. In particular, this concept requires programmers to create a mobile solution as a\n\t\t\t\t\tsingle unit. It means that all functions are managed in one place. As a result, if something\n\t\t\t\t\tgoes wrong in one component, the operation of the entire app is affected. Besides, products\n\t\t\t\t\tthat are based on a monolithic architecture pattern are much harder to maintain and scale\n\t\t\t\t\tup.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

Microservice architecture of mobile apps

\n\t\t\t\t

\n\t\t\t\t\tThe microservice architecture is a modern way to build applications for mobile devices.\n\t\t\t\t\tAccording to this approach, each feature of a product represents a microservice. All\n\t\t\t\t\tmicroservices within an app are autonomous and operate independently. However, different\n\t\t\t\t\tcomponents of a product can communicate with each other using APIs. This allows programmers\n\t\t\t\t\tto change any element of an app without affecting other functions. Due to this, mobile apps\n\t\t\t\t\tthat utilize a microservice architecture pattern are more flexible. Developers can easily\n\t\t\t\t\tupdate any of their parts, and scalability isn’t a problem either.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

Basic principles for designing high-quality app architecture

\n\t\t\t\t

\n\t\t\t\t\tHow to know if your mobile app architecture is good or not? Here are the core criteria that\n\t\t\t\t\twill help you evaluate its quality regardless of the type of application that you’re\n\t\t\t\t\tbuilding.\n\t\t\t\t

\n\t\t\t\t
    \n\t\t\t\t\t
  • \n\t\t\t\t\t\tClarity. \n\t\t\t\t\t\tThe app architecture has to reflect the specifics of its targeted business domain (e.g., taxi\n\t\t\t\t\t\tservices, food delivery industry, e-learning)\n\t\t\t\t\t
  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\tScalability. \n\t\t\t\t\t\tAs mentioned, a good mobile app architecture allows you to add new features and scale up a\n\t\t\t\t\t\tproduct easily.\n\t\t\t\t\t
  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\tReadability. \n\t\t\t\t\t\tThe code must be easy to read to other developers — even those who were not involved in the\n\t\t\t\t\t\tproject.\n\t\t\t\t\t
  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\tTestability. \n\t\t\t\t\t\tIf a mobile app architecture is built right, testing a product will take less time and resources,\n\t\t\t\t\t\twhile the effectiveness of the QA efforts will remain at a high level.\n\t\t\t\t\t
  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\tEfficiency. \n\t\t\t\t\t\tA mobile app that is based on solid architecture offers smooth performance and can cope with\n\t\t\t\t\t\thigh loads.\n\t\t\t\t\t
  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\tMaintainability. \n\t\t\t\t\t\tA well-designed mobile app architecture ensures that the product will be maintainable, and\n\t\t\t\t\t\tthe costs needed for its support aren’t too high.\n\t\t\t\t\t
  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\tOptimization. \n\t\t\t\t\t\tIf you create a good architecture for a mobile development project, it’ll save time and money\n\t\t\t\t\t\trequired to bring a product to life.\n\t\t\t\t\t
  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\tSecurity. \n\t\t\t\t\t\tThe mobile application architecture should allow for data encryption and create a secure environment\n\t\t\t\t\t\tfor data transmission.\n\t\t\t\t\t
  • \n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tYet, the above list isn’t exhaustive. If you want to create a high-end mobile solution,\n\t\t\t\t\tit’ll need a unique approach. Seeing a big picture is great, but you shouldn’t forget about\n\t\t\t\t\tthe details either.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t

Conclusion

\n\t\t\t\t

\n\t\t\t\t\tDeveloping a decent architecture for a digital product is a crucial element of any mobile\n\t\t\t\t\tapp development project. It ensures the future solution will be maintainable, scalable, and\n\t\t\t\t\terror-free. If you don’t possess sufficient technical competency and don’t feel confident\n\t\t\t\t\tabout being responsible for such a foundational phase of a development process, we recommend\n\t\t\t\t\tyou to find a professional development team. Experienced programmers will help you create\n\t\t\t\t\thigh-quality architecture for a mobile app and avoid wasting money on solutions that don’t\n\t\t\t\t\twork.\n\t\t\t\t

\n\t\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

Contents

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n{@html combinedSchemas}\n"],"names":["attr","link0","ctx","meta0","meta3","meta4","meta5","meta7","meta8","meta9","domain","slug","meta13","meta16","meta17","openGraphImageUrl","append_hydration","document_1","meta1","meta2","meta6","meta10","meta11","meta12","meta14","meta15","meta18","link1","style","insert_hydration","target","section6","anchor","div6","section0","div0","h1","p0","section3","section1","p1","a0","br0","br1","a1","h20","p2","uL","li0","li1","li2","li3","p3","h21","p4","div1","img0","h30","p5","h31","p6","h32","p7","br2","br3","h22","p8","ul0","li4","li5","li6","li7","li8","p9","a2","h23","p10","div2","img1","h33","p11","h34","p12","h35","p13","br4","br5","ul1","li9","li10","li11","li12","li13","p14","h36","p15","h24","p16","div3","img2","h37","p17","h38","p18","h25","p19","ul2","li14","strong0","li15","strong1","li16","strong2","li17","strong3","li18","strong4","li19","strong5","li20","strong6","li21","strong7","p20","h26","p21","section2","div5","div4","h27","nav","ul3","li22","a3","li23","a4","li24","a5","li25","a6","li26","a7","li27","a8","li28","a9","section4","section5","current","dirty","title_value","breadcrumbsSchemaArticleName","seo","modifiedDate","publishedDate","currentBlog","blogs","blog","author","relatedUrlList","relatedCaseStudies","articles","item","relatedBlogs","relatedArticles","sortArticlesByUrlList","onMount","contentItems","headers","handleScroll","blogPostingSchema","createBlogPostingSchema","breadcrumbsSchema","createBreadcrumbsSchema","combinedSchemas","serializeSchema","organizationSchema","webSiteSchema"],"mappings":"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"}