원본 : http://docs.sencha.com/io/1-0/#!/guide/overview
번역 : https://github.com/KoreaSenchaUserGroup/Sencha.io/wiki/1.-Sencha.io-Overview-and-Architecture
글쓴이 : 김태원, 한국센차유저그룹 Sencha.io팀

Part 1: Overview and Architecture.

Data, user, messaging, and deployment cloud services for Sencha Touch apps

Sencha Touch 앱들을 위한 데이터, 사용자, 메시징 그리고 배포를 위한 클라우스 서비스.

The Sencha.io platform provides a set of cloud services that make it easier for mobile app developers to deliver robust web functionality. Modern mobile app development goes well beyond just the client itself. Today’s apps need to be able to create, store, and share data — whether it’s data about the users or data that’s part of the app experience. Additionally, app users typically need a way to communicate with each other, preferably without having to quit the app.

Sencha.io 플랫폼은 보다 쉽게 모바일 앱을 만들고, 강력한 웹 기능을 제공하는 클라우드 서비스입니다. 최근의 앱 개발은 클라이언트 자신을 넘어서려하고 있으며, 앱들은 데이터를 생성, 저장, 공유할 수 있어야 합니다.–어디서든지 볼 수 있는 데이터는 사용자 경험의 일부분입니다. 추가적으로 앱 사용자들은 일반적으로 앱을 종료하지 않으며 서로 통신하는 것을 선호합니다.

Sencha.io addresses those needs for web apps with the following cloud services:

  • Sencha.io Login provides a set of APIs for user registration and login. Login data is stored in the cloud. Users have a single place to store data about themselves, and developers can use that store, as well.
  • Sencha.io Data synchronizes local data with the cloud. Users always have access to app data even when the network is not available, and they can share the data with other users and with apps running on other devices
  • Sencha.io Messaging lets users send and receive messages from within mobile apps. The service enables reliable one-to-one and one-to-many messaging.
  • Sencha.io Deployment provides version management, management tools, usergroup management services, and app delivery through the Sencha app repository, Senchafy.com.

Sencha.io는 웹 앱에 대한 요구사항을 아래의 목록과 같이 클라우드 서비스로 해결합니다.

  • Sencha.io 로그인은 사용자 등록과 로그인을 위한 API 셋입니다. 로그인 데이터는 클라우드 서비스에 저장됩니다. 사용자는 한 곳에 저장된 그 자신의 데이터를 가지고 있으며, 개발자는 이 데이터를 사용하는 등의 작업이 가능합니다.
  • Sencha.io 데이터는 클라우드와 로컬 저장장치간 데이터를 동기화 합니다. 네트워크를 이용할 수 없는 상태에서 사용자는 앱 데이터를 이용할 수 있으며, 앱이 실행된 다른 장치 또는 다른 사용자들이 이용할 수 있도록 공유할 수 있습니다.
  • Sencha.io 메시징은 사용자들 끼리 메시지를 보내고 받을 수 있는 서비스입니다. 이 서비스가 활성화 되면 1:1, 1:다 메시징 서비스를 이용할 수 있습니다.
  • Sencha.io 배포는 Sencha app 저장소인 Senchafy.com에서 버전관리, 관리 툴, 사용자 그룹 관리 서비스 그리고 앱 사용 기간을 관리를 제공해주는 서비스입니다.

Access to these services is available through the Sencha.io SDK, available for download from developer.sencha.io.

이러한 서비스들을 이용하려면 Sencha.io SDK를 통해서 가능하다. developer.sencha.io 에 접속하여 직접 다운로드 받을 수 있다.

If you’ve previously used Sencha.io Sync and Sencha.io Src,the code you’ve written will continue to work as-is. Sencha.io Sync has become a part of Sencha.io Data, and Sencha.io Src has become part of Sencha.io Deployment.

만약 이전에 Sencha.io Sync와 Sencha.io Src 사용하여 작성한 코드는 실행될 것입니다. 그리고 Sencha.io Sync는 Sencha.io Data로 Sencha.io Src는 Sencha.io Deployment로 변경되었습니다.

The Sencha.io guides introduces you to each part of the Sencha.io platform offering, starting with its overall architecture.

Sencha.io 가이드 문서에서는 Sencha.io 전반적인 아키텍쳐에 대해 살펴보고, 플랫폼에서 제공되는 파트에 대해서 각각 소개하도록 하겠습니다.

Sencha.io Architecture

Sencha.io 아키텍쳐

Modern mobile app developers face problems like storing, backing up and sharing app data, creating user data for logins and registration, enabling messaging from within apps, and deploying apps. Addressing these problems can create levels of complexity and work far beyond the relatively straightforward task of writing an app client.

모바일 앱 개발자들은 데이터의 저장, 데이터의 백업 및 응용 프로그램 데이터를 공유​​, 로그인 및 사용자 데이터를 생성, 앱 내에서 메시징 지원과 앱 배포 등과 같은 문제에 직면하고 있습니다. 이러한 문제를 해결하는 것은 복잡하고 간단한 작업은 아닙니다.

Sencha.io at its simplest is an architecture and set of services that take the complexity out of solving those problems. With Sencha.io you write a mobile app using Sencha Touch, manage and deploy it using Sencha.io Deployment services, and, with very little additional code, provide users a range of services that dramatically enhances their ability to work with your app.

Sencha.io 아키텍쳐를 간단히 말해서, 이러한 복잡한 문제를 해결하는 서비스들의 묶음입니다. 또한 Sencha.io는 Sencha Touch를 사용하여 작성된 모바일 앱도 Sencha.io Deployment 서비스를 이용하여 관리하거나 배포할 수 있습니다. 그리고, 적은 수의 코드 작성만으로 동적으로 추가할 수 있는 서비스들의 범위를 넓혀 사용자들에게 제공할 수 있습니다.

Consider an example that relies on the four current Sencha.io services — an app called ExpenseFastTracker (EFTer) used to track and submit expenses:

  • A development team collaborates on EFTer and uploads it for deployment to Senchafy.com, the Sencha app repository, using Sencha.io Deployment services.
  • A mobile user downloads and registers for EFTer. The app now knows who she is and also knows the members of her team as well as her manager through the Sencha.io Users service. Based on her registration data, she logs in to EFTer and starts using it.
  • As she conducts her business that week, she enters expense data into the app — perhaps even photographs of receipts — and whenever her device is in range of the network the app synchs all the data with the cloud through Sencha.io Data. EFTer might also provide expense limit data for travel destinations as well as approved hotels and other service providers. This data is also synched with the app on her device whenever it is in reach of the network through Sencha.io Data.
  • When she’s done, she sends a report to her manager — a one-to-one message through Sencha.io Messages. He replies with his approval; she then forwards the message — a one-to-many message — to accounts payable for payment and to central administration for tracking.

지금 4가지 Sencha.io에 대한 예제를 생각해 볼 수 있습니다. –ExpenseFastTracker (EFTer) 앱에서 제출된 비용 보고서를 봅시다.

  • EFTer 개발팀과 협력하여 Sencha.io 배포 서비스를 사용하여 Sencha 앱 저장소인 Senchafy.com에 배포하기 위해 업로드합니다.
  • 모바일 사용자들은 EFTer를 다운로드 받고 회원 가입을 합니다. 지금 이 앱에서는 그녀가 누구인지 알 수 있고, 또한 Sencha.io 사용자 서비스를 통해 그녀의 팀 멤버도 알 수 있습니다. 그녀가 등록한 데이터를 바탕으로 그녀는 EFTer에 로그인하고 서비스를 이용합니다.
  • 또한 그녀는 사업을 함으로써 앱에 비용 데이터를 입력하고, –아마 영수증 사진을 촬영할 수도 있겠죠?– 네트워크가 가능한 범위 안에서 언제든지 Sencha.io 데이터 서비스를 이용하여 클라우드에 존재하는 모든 데이터를 동기화 할 수 있습니다. 또한 경비 한도 데이터를 여행 목적지에 대한 데이터뿐만 아니라 그 주위의 호텔 또는 다른 서비스 제공자에게 EFTer를 통해 제공해 줄 수 있습니다. Sencha.io 데이터 서비스를 통하여 네트워크가 가능한 범위안에서 데이터가 동기화 되고, 언제든지 그녀의 앱과 연관되어 실행됩니다.
  • 그녀는 일을 마칠 때, 관리자에게 보고서를 제출합니다.–Sencha.io 메시지 서비스를 통해 –1:1(일대일)–로 메시지를 전송합니다. 그녀는 관리자의 승인을 회신한 후 –1:n (일대다)– 메시지를 보냅니다.– 비용을 지불할 중앙 지급 계정에 비용을 지불합니다.

To provide these services to you and your app, the Sencha.io architecture starts off by recognizing a set of actors and objects that need to relate to each other during creation and use of an app. These actors and objects include the following:

  • Developer: You, the person creating a mobile app
  • Team: The other people on the development team
  • App: The code you and the team create
  • User: The consumer of apps. A single user can have multiple client devices.
  • Group: An aggregation of multiple users.
  • Data Store: The store of data used by an app
  • Device: The device running an app

이러한 서비스들을 제공하기 위해 Sencha.io 아키텍쳐는 앱의 생성과 사용하면서 서로 관련되는 액터와 객체의 집합을 인식하여 동작합니다. 이러한 액터들과 개체들은 포함하는 의미는 아래의 목록과 같습니다.

  • Developer: 모바일 앱을 만드는 사람 또는 지금 이 문서를 보고 있는 여러분!
  • Team: 개발팀에서 여러분을 제외한 나머지.
  • App: 개인 또는 팀에서 만든 코드.
  • User: 앱의 소비자. 한 사용자가 여러 클라이언트 디바이스를 가질 수 있다.
  • Group: 다양한 사용자들의 모음.
  • Data Store: 앱에서 사용된 데이터의 저장.
  • Device: 앱이 실행되는 디바이스.

The Sencha.io architecture further defines an information model relating the actors and objects, essentially placing them in a graph that makes clear their relationships. You can see a schematic of some of these relationships in Figure 1: Sencha.io actors and objects. To begin to describe the model, the developer is part of a team. He can be part of more than one team, each of which contains more than one developer. The team works on at least one app, but each app belongs to only one team. That app can be associated with a single group of users, which can use more than one app. For the purposes of using that app, a user is a member of group that has more than one user.

Sencha.io 아키텍쳐는 더 본질적으로 그들의 관계를 그래프에 위치하여 깔끔하게 만들고, 액터와 개체로 나누어 정보 모델을 정의 합니다. “Figure 1: Sencha.io actors and objects”에서 이러한 관계 중 일부의 구조도를 볼 수 있습니다. 액터와 개체 정보 모델에 대해 설명하면, 개발자는 팀의 팀원이 되고, 개발자가 소속되어 하나 또는 팀을 구성할 수 있습니다. 팀은 최소 하나의 앱에서 동작하지만, 각각의 앱은 하나의 팀에 속하게 됩니다. 또한 앱은 하나 이상의 앱을 사용할 수 있는 사용자 집단과 연관될 수 있습니다. 마지막으로 앱의 사용자는 하나 이상의 사용자 그룹의 구성원으로써 가입할 수 있습니다.

Any app written with Sencha Touch and the Sencha.io SDK has an understanding of these relationships built into it. Apps written with the Sencha.io SDK essentially “walk” this graph, establishing and using the relationships between the actors and objects. When you develop a Sencha Touch app, it navigates the graph and creates functionality that can simply assume that issues like authentication, data access and sharing, and user collaboration and communications are taken care of.

Sencha Touch로 작성된 앱과 Sencha.io SDK 사이에 관계를 이해하고 있습니다. Sencha.io SDK로 작성된 앱들은 그들이 사용할 액터와 개체와 개체 사이의 관계를 결정하고 그래프에 등록합니다. Sencha Touch 앱을 개발할 때, 우선 액터와 개체 정보 모델 관계 그래프를 탐색한 후 인증, 데이터 엑세스 및 공유, 사용자 협업 및 통신과 같은 문제를 간단하게 할 수 있는 기능들을 만듭니다.

The complexity involved in delivering these services is hidden behind the Sencha.io architecture. You simply add a few lines of code that call the services and define how your app will use them. Sencha.io takes care of the rest of it for you.

이러한 서비스들을 관련된 복잡한 부분은 Sencha.io 아키텍쳐 뒤에 숨어 있습니다. 그렇기 때문에 간단히 몇 라인 코드를 추가하는 것으로 서비스들을 호출하거나 앱에서 사용할 방법을 정의하는 것이 가능합니다. 나머지는 Sencha.io에서 알아서 처리해 주도록 되어 있습니다.

Based on this architecture, Sencha.io can provide an expanding range of services. Read the additional Sencha.io guides to learn about currently available Sencha.io services:

이 아키텍쳐에 기반하여 Sencha.io 서비스들은 제공되는 서비스들이 확장된다. 추가적으로 Sencha.io 서비스들에 대해서 알고 싶다면 아래의 Sencha.io를 읽어보시는 것을 추천합니다.

  • Part 2: Sencha.io Login
  • Part 3: Sencha.io Data
  • Part 4: Sencha.io Messages
  • Part 5: Sencha.io Deployment and Additional Resources