SlideShare a Scribd company logo
1 of 7
Download to read offline
Half-Push/Half-Polling
           Youngsu Son                                                Jinho Jang                                    Jemin Jeon
 Home Solution Group Samsung                                Dept. of Computer Science                       Dept. of Computer Science
          Electronics                                          Hanyang University                              Hanyang University
arload.son@samsung.com                                         jinhoyo@nate.com                                luvjjm@gmail.com

            Sangwon Ko                                             Hyukjoon Lee                                   Jungsun Kim
    Dept. of Computer Science                               Dept. of Computer Science                       Dept. of Computer Science
       Hanyang University                                      Hanyang University                              Hanyang University
     funkcode@gmail.com                                       xenoplo@gmail.com                          jskim@cse.hanyang.ac.kr


ABSTRACT
To create constantly evolving software, the upgrading is an
                                                                             1. INTRODUCTION
                                                                             Software must reflect the changes of the real world. If not,
essential factor. There are two ways to upgrade, pushing and
                                                                             software will decays over time. No matter how well-made,
polling. Polling has the advantage of keeping the latest versions of
                                                                             software must always be revised based on client’s requirements
all the clients, but can cause heavy server load by simultaneously
                                                                             changes and the needs for new services. Due to it, many
connections to many clients and unnecessary network traffics. On
                                                                             applications currently support upgrade services in order to
the other hand, push causes much less because push can upgrade
                                                                             improve the customer satisfaction. Through this upgrade service,
the specific clients, but there is cumbersome monitoring to keep
                                                                             the clients can use the latest services without installing a new
stopped clients on latest version. The Half-Push/Half-Polling
                                                                             program on every time.
pattern mixes these two different ways, keeping their advantages,
eliminating their disadvantages.                                             One of the major issues to consider on upgrade service is data
                                                                             transmission method. In the majority of cases, server resources are
Categories and Subject Descriptors                                           limited. For this reason, an efficient data transmission method is
D.3.3 [Programming Languages]: Language Contructs and                        needed.
Features – patterns.                                                         In client/server model, polling and pushing are generally used as
D.2.11 [Software Engineering]: Software Architectures –                      data transmission methods. However, the polling method can
patterns.                                                                    cause server overhead when many clients request the upgrades
                                                                             simultaneously. And the push method has problems such as
                                                                             failure to complete the upgrade when the client is offline or when
General Terms                                                                errors occur while upgrading. So the clients that did not upgrade
Algorithms, Design, Reliability.                                             must be managed to be upgraded in later time.
                                                                             A more efficient data transmission method, therefore, is needed to
Keywords                                                                     make up for these weak points. In this paper, we present the Half-
Upgrade Ticket, Push/Pull Updater                                            push/Half-polling pattern which mitigates the weak points of
                                                                             polling and push methods. The pattern reduces the server
                                                                             overheads. Using distributed update time and scheduling, it also
                                                                             applies suitable upgrades from considering each client’s features.
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that          2. BACKGROUND
copies bear this notice and the full citation on the first page. To copy     In Client-Server Model, Push or Polling are general ways to
otherwise, to republish, to post on servers or to redistribute to lists,     update clients. Push refers to actively updating clients by the
requires prior specific permission. Preliminary versions of these papers     server. The server requests access to the clients and pushes data to
were presented in a writers’ workshop at the 16th Conference on Pattern      them. The advantage of this approach is that you can fully utilize
Languages of Programs (PLoP).
                                                                             the server’s resources within the limit of network bandwidth.
PLoP’09, August 28-30, Chicago, IL, USA. Copyright 2009 is held by
the author(s). ACM 978-1-60558-873-5                                         However, this method assumes that the client will always be alive.
                                                                             And it also requires the server to keep information about clients.
                                                                             The figure1 shows how Push method works. When some
                                                                             events(ex; upgrade) occur and the server needs to connect to the
                                                                             clients, the server can control the workload autonomously in
consideration of its capacity and the bandwidth. Numbers in the          On the other hand, In Push method, a client that is turned off or
picture represent a sequence of operations.                              malfunctions at the time of the Push wouldn’t be updated.
                                                                         Let’s take a specific example with the figure below. The server
                                                                         has to update various types(green, yellow, red) of devices that are
                                                                         placed in different location. Some office would have all types of
                                                                         devices but some would not. In this situation, it is possible for the
                                                                         server to manage devices in a way that groups them by device
                                                                         type or location.




                 Figure 1. Push Upgrade Method
On the other hand, when using polling method, the clients have
the initiative. The clients request data transmission from the server.
Because the server is more stable and using this method
guarantees the server is alive, the chance of the problem is very
low.
                                                                                            Figure 3. Office Automation
However, in Polling method, as opposed to Push, the clients
check repeatedly whether any events have occurred or not. And all
of clients would attempt to access to the server at the same time in     4. CONTEXT
the worst case because there is no fixed order. The figure below         The Upgrade system needs a lot of servers if all of clients must be
shows such case.                                                         upgraded as soon as possible, such as anti-virus programs.
                                                                         However, in the case where there is no time limitation, like a
                                                                         Windows Update, the server can update clients easily within the
                                                                         limits of its resources regardless of the state of clients.

                                                                         5. PROBLEM
                                                                         Imagine we are building a data transmission system to send the
                                                                         newest version continuously to the clients. In the client/server
                                                                         model, polling and push methods are generally the used data
                                                                         transmission methods for limited server resource. However, the
                                                                         polling method can cause server and client overhead when many
                                                                         clients request the upgrades simultaneously and check server
                                                                         version periodically.
                                                                         If we adopt push method on the system, we can get the benefit of
                                                                         reducing the overhead used for the scheduling. But push method
                                                                         has problems when the client cannot complete the upgrade, for
                                                                         example when the client is off-line or it encounters an error during
                                                                         upgrading. We, therefore, need an efficient and reliable data
                  Figure 2. Poll Upgrade Method                          transmission method to maintain the condition of clients using
                                                                         scheduling methods.
3. EXAMPLE
For example, let’s assume that we are developing an office               6. FORECES
automation system for buildings located closely together in a            The following items should be regarded as forces:
downtown. There are various types of devices in the system and
they are connected to a wired or wireless network. In addition,                   Consider that the server has limited throughput to make
requirement is to keep the software in each device up-to-date. The                 upgrade possible.
server will provide the latest software via client-server model. In
Polling method, each client requests data from the server without                 It should be possible to manage various clients by group.
considering any other clients. So, it would cause server overload.
    Clients who fail during the upgrade can upgrade in the               GetUpgradeTime – Receive the upgrade time from
         future.                                                               Pusher.
        We need to balance efficiency with reliability.                      SetTimer – Set the time assigned from Pusher. However,
                                                                               it does not run the upgrade directly at the assigned time.
                                                                               Instead of that, the Poller calls Pusher’s
7. SOLUTION                                                                    GetUpgradeTimeSpan() function to provide an upgrade
The half-push/half-polling pattern overcomes the disadvantages of
                                                                               window in case the server’s throughput would reach the
upgrading based on either push and polling method.
                                                                               limit.
Pusher, the upgrade server, uses schedules to distribute the
                                                                      The scheduler implements a scheduling strategy for distributing
upgrade time to Pollers(clients) which are on the upgrade list. At
                                                                      the upgrade time. The scheduler component can use different
distributed time, the client requests upgrade from the pusher
                                                                      scheduling strategies[10][11] for different clients(Pollers).
which then executes the upgrade service. Therefore we can avoid
the Non-Stop Talker which polling method invokes. Normally to
overcome the disadvantage of push methods, the clients who are        7.2 Dynamics
off-line have to be managed separately. But in our pattern, at the
time when those clients are booted, the clients request their
upgrade time. Because of that, we don’t’ need to manage the
clients separately.

7.1 Structure




                                                                                            Figure 5. Registration
                                                                      As in Publisher-Subscriber[7], the Poller(client) can register or
                                                                      cancel the execution of the upgrade service by passing its own
                                                                      reference to the Pusher(server).


           Figure 4. Half-Push/Half-Polling Structure
Pusher component is the advanced component that improves
existing push functions. This component keeps a list of Pollers
that demanded an upgrade and allocates upgrade time.
        AttachPoller – This function registers new
         Pollers(clients). The goal of this function is to add
         Pollers to PollerList, the scheduling target list.
        DetachPoller – This function is for deleting Poller from
         PollerList.
        BeginUpgrade – Entrypoint to start the upgrade. It is the
         exposed interface to the external source which requested
         the upgrade.
        NotifyUpgrade – Pusher notifies the upgrade process to                     Figure 6. Upgrade Sequence Diagram
         selected Pollers.
                                                                      The BeginUpgrade() function is executed by the server
        GetUpgradeTimeSpan – Poller calls this function to           application to Pusher.
         assign the upgrade time from pusher after receiving the      Then, the Pusher sends the upgrade information(version etc.)
         upgrade request through NotifyUpgrade from pusher.           through AreYouAlive() function to Pollers. The Poller calls the
        DoUpgrade – To call PushFiles() for upgrade when the         GetUpgradeTime() function when it needs the upgrade after
         assigned upgrade time of Poller is 0.                        comparing its version with the pusher’s version. After that, the
                                                                      scheduler is called for allocating the upgrade time interval
        PushFiles – To forward the actual upgrade list of files to   internally. If the upgrade time, TimeSpan, is set as specific hour
         Poller.                                                      such as 3:04 Pm, a complex time synchronize mechanism[2][9] is
                                                                      needed between Pusher and Poller or Pollers. To avoid that, we
Poller is a component which needs the upgrade regularly. It has to
                                                                      set the TimeSpan as time interval such as 300ms, 400ms.
have the right Pusher address that Poller can access all the time.
When the assigned upgrade time becomes 0, Poller calls the             If a standard message format is used, such as XML for
DoUpgrade() function.                                                  interoperability, a conversion process is required like
                                                                       Marshling/Unmarshaling. This is not suitable for a system that
The Pusher creates a list of files and transmits it to the Poller by
                                                                       requires quick responses due to the limited resources. In that case,
calling PushFiles(). The Poller doesn’t take files itself. Instead,
                                                                       despite system dependency, we should require a message transfer
the Pusher sends them to the Poller in the form of notification.
                                                                       format based on protocols using Binary Method Table[7], such as
The reason for this is to obtain flexibility that enables providing
                                                                       COM+, OLE, for performance guarantee.
different file information to the Pollers depending on version –
even if they have same type.                                           Step 4 : Information from Poller to Pusher should allow extension.
But if the assigned upgrade time is more than 0, the Poller waits      The information sent to Pusher can be changed according to the
until it reaches 0. When it reaches 0, it does not run the upgrade     scheduling algorithm or Poller’s feature. Various Pollers are
directly. Instead, Poller calls pusher’s GetUpgradeTimeSpan()          added in the system and thus, the exchange information is
function in case of server’s throughput would reach the limit. In      designed for extension. For that reason, it should consider using –
such case of server’s throughput reaching the limit, the Poller        the Composite Message[1] or the Parameter Object pattern[3].
would get a new upgrade time for server availability.

8. IMPLEMENTATION
Step 1 : Collect the characteristics of upgrade targets(Pollers).
We could consider the clients (Pollers) that always connect to the
network as the upgrade target. However, we should adopt the
polling method for clients who are not often connected to the
network, such as P2P.
Step 2 : Choose the scheduling algorithm considering Quality of
Service(QoS).
The following QoS[6]should be taken into the consideration when
performing–the upgrade time.
         Flexibility; any part of system can be upgraded.
                                                                                     Figure 7. Composite Message Pattern
         Robustness; the risk of error and crash should be
          minimized.                                                   In the Composite Message pattern, the exchange message can be
                                                                       added/removed through Pipes or Filters. And then, it exchanges or
         Ease of use; upgrade process should be concise.              extends protocol easily. Due to these flexible structures which
         Low overhead; it should minimize the impact on system        slow down the process, it is not suitable for embedded systems
          performance.                                                 which have limited resources and requires quick response.
                                                                       Step 5 : Consider type, group, or kind of dependencies between
         Cost; it should minimize the cost of upgrading
                                                                       the Pollers.
         Independence; modules which are not related to
                                                                       In most cases, the system has various Pollers(For example, the
          upgrade should not be considered.
                                                                       company has many different kinds of mp3 devices or the company
         Reliability; Robustness is related to risk during upgrade,   manages various version of electronic products). On top of it,
          Reliability is related at the end of the upgrade. In other   there are dependencies among Pollers for certain services. In this
          words, it should be able to trust that upgrade is done       case, to solve the problem, we can make various groups using
          correctly.                                                   Event Channel[10] between Pusher and Poller as in figure 8.

         Integrity; it should maintain one status for upgrade,
          complete or nothing. Upgrading only part of files
          should not be allowed. This means rollback function
          should be supported when an error occurs during the
          upgrade.
         Continuity; the upgrade should be run without
          interruption.
It is important to understand QoS for the upgrade. The right
scheduling strategy is determined according to the system. If the
system deals with a variety of upgrade versions or deadlines, the
scheduling becomes important issue in a system like real-time
system.
Step 3 : Decide the message exchange format.
Apartment Number 101 and PLoP Apartment Number
                                                                                 112 – “Range:AptNum:AptNum:0101:AptNum:0112”
                                                                                In case of appointing type for permission access to
                                                                                 Apartment. For example, the type is 3536 as entrance
                                                                                 system at PLoP Apartment Number 101 –
                                                                                 “RangeAptNum:AptNum:0101:NodeType:3536”
                                                                       Step 6 : Check Poller’s status periodically.
                                                                       When the server(Pusher) distributes the upgrade time though the
                                                                       scheduler, some of the clients are often off-line. Then the server
                                                                       waits for response from clients for a certain time. Because the
                                                                       client is off-line, an incorrect schedule is made which increase
                                                                       total upgrade time.
                                                                       To solve this problem, Alive Check Manager that distinguishes
                                                                       whether the target Pollers(clients) are alive or not is needed as a
                                                                       separate upgrade module. Alive Check Manager sends cycle to the
                                                                       Pollers which are registered. Then those Pollers send the Alive
                                                                       message to the server according to the assigned cycle. For
                 Figure 8. Instance of Event Channel                   example, if the alive message does not come over the cycle * N
                                                                       times, it is necessary to change the state of Poller to dead and the
class EventChannel                                                     Poller is removed from the upgrade target list.
{
   ………..                                                               Step 7 : Use the Timer or WatchDog to manage the time
   // Managed poller list                                              information from the pusher.
   private List ConsumerList;                                          If Pusher and Poller have absolute time as TimeSpan, a complex
   private List FilterList;                                            time synchronization mechanism is needed. However, the interval
                                                                       of time is used as TimeSpan in the Half-Push/Half-Polling pattern.
     public bool AttachConsumer();                                     Instead of that, either Timer or Watcher(WatchDog)[4]is needed
     public bool DetachConsumer();                                     to control the time interval. In addition, current time and the time
                                                                       interval(TimeSpan) must be stored in a file or DB in case of
     //assign the filter for grouping of various pollers(upgrade       system failure. So, we can know whether the upgrade request is
     target)                                                           needed when the system restarts. If the current time is greater than
     public bool AttachFilter();                                       the time that we stored on the file or DB, the Poller rechecks
     public bool DetachFilter();                                       whether the upgrade is possible to Pusher.

     //Start the EventChannel service.                                 Step 8 : Consider appropriate File Transmission Mechanisms.
     public bool Run();                                                All systems have to use appropriate mechanisms depending on
                                                                       domain or situation. The optimal solution for every
     //send the poller’s information ( i.e. device own ID, state       situation(Silver Bullet) does not exist. When you need to
     information, App version, Framework version information etc.)     upgrade/patch many different kinds of devices, it is necessary to
     public void NotifyUpgrade();                                      consider a variety of network environments. Either the Pollers
};                                                                     which request mass file transfer may exist or the Pollers which
The picture and source above are the examples of Event Channel         periodically request small amounts of data may exist. To consider
structure.                                                             this situation, the File Transmission Strategy is chosen according
                                                                       to the type of Poller. To resolve these problems, “JAWS:A
The direct dependency between Pusher and Poller is removed             Framework for High-Performance Web Servers”[5] provides good
because various Pollers are managed with Event Channel as above.       solutions. In that study, the asynchronous transfer
In other words, this is a more flexible structure–to allow changes     mechanism(Proactor)[8] like IOCP has bad performance for
when adding/removing new Pollers or when targeting the upgrade         transferring small files.
groups. In addition, using the filters, the upgrade targets(Pollers)
can be grouped into various forms as following items.                  9. KNOWN USES
           In case of appoingting type of upgrade Poller. For         – OMG CORBA Event Service
            example, the type is 3536 and 3836 – “NodeType:3536”,      The Event service of RealTime CORBA it is not for upgrading,
            “NodeType:3836”                                            but the Event Channel method that replaces push method with
                                                                       pull(polling) method as data transmission method.
           In case of appointing resident such as PLoP Apartment
            Number 101 – “AptNum:0101”                                 – Hybrid Push/Pull Download Model in Software Defined Radios
                                                                       A Software-Defined Radio(SDR) system is a radio
           In the event of appointing ouprade Poller group. For       communication system where components that have typically
            example, the range of group is between PLoP                been implemented in hardware(e.g. mixers, filters, amplifiers,
modulators/demodulators, detectors. etc.) are instead implemented     Push/Half-Polling pattern. It is used in various distributed
using software on a personal computer or other embedded               middleware.
computing devices. When a new way of service starts, it is natural
                                                                      Pipe & Filter[7]
to replace existing terminals with new ones. However, the SDR
performs mostly on Software instead of the existing                   This pattern is used when adding or filtering messages you want
semiconductor. Hybrid Push and Pull[12] which is one of the           to transmit flexibly according to the circumstance, used internally
down models SDR offers is a good example of Half-Push/Half-           in the aforementioned Composite Message. It is also used to filter
Polling pattern.                                                      unwanted data when building an Event Channel.
– Samsung Homevita                                                    Broker[7]
Homevita, a home networking system from Samsung electronics,
adopted the upgrade methods with a mixture of push and polling        This pattern removes direct dependency(location information,
method. In the Homvita 1.0 version, it took the polling method for    platform restrictions, etc.) between server and client. By
upgrade. However, it had big overhead by the request of many          delegating the location information of Pusher, which is in Poller,
devices simultaneously. To avoid the problem, the system adopted      to Broker, Poller can remove itself of its direct dependency on the
the push upgrade method in the Homevita 2.0 version. After that,      Pusher.
overhead was reduced. But the system needed a way to monitor
dead devices. In the 2.5 version, a mixture of push and polling       ACKNOWLEDGMENTS
method are adopted. It reduces server overhead. And the devices       We thank our shepherd Robert Hanmer for his valuable comments
which are alive keep the newest version.                              that contributed to improve this paper. The EVA (Pattern
                                                                      Evangelist Group), James Chang provided useful improvements
10. RESULTING CONTEXT                                                 and corrections.
The advantages of this pattern include:
                                                                      REFERENCES
     –    Solving the problem of heavy loads in very short            [1]   Aamond Sane, Roy Campbell, “Composite Messages: A
          periods of time caused by the Polling-based upgrade               Structural Pattern for Communication between
          method and benefiting from the Push method which                  Components”, OOPSLA’95 Workshop on Design Patterns
          only upgrades specific clients.                                   for Concurrent, Distributed, and Parallel Object-Oriented
     –    Reducing network traffic and load of the server/client            Systems, 1995.
          because it doesn’t need to check the version of the
                                                                      [2]   F.Cristian, “Probabilistic Clock Synchronization”,
          server periodically.
                                                                            Distributed Computing, vol.3., pp.146-158, 1989.
     –    Being able to upgrade specifically selected clients by
          grouping them.                                              [3]   Martin Fowler, Kent Beck, John Brant, William Opdyke,
                                                                            Don Roberts, “Refactoring : Improving the Design of
Possible disadvantages are:                                                 Existing Code”, Addison-Wesley Professional, 1999
     –    It is not suitable for systems like vaccines that require
                                                                      [4]   Robert S. Hanmer, “WatchDog”, Patterns for Fault Tolerant
          all devices to be upgraded in case of emergency because
                                                                            Software, John Wiley & Sons, October, 2007
          the scheduling method used takes server load into
          account.                                                    [5]   James C. Hu, Douglas Schmidt, “JAWS: A Framework for
     –    It is impossible to upgrade clients if a problem occurs           High-Performance Web Servers”, Domain-Specific
          on the server(Pusher) while the program is running.               Application Frameworks: Frameworks Experience By
          Reliability must be guaranteed by copying Pusher                  Industry, John Wiley & Sons, October, 1999
          components or using various fault tolerance methods[4].     [6]   Michael Hicks, Jonathan T. Moore, Scott Nettles, “Dynamic
     –    It is difficult to apply to a system such as P2P, where           Software Updating”, ACM Transactions on Programming
          server and client information changes frequently.                 Laguages and Systems(TOPLAS), Voume 27, Issue 6
                                                                      [7]   Frank Buschmann, Regine Meunier, Hans Rohnert, Peter
11. RELATED PATTERNS                                                        Sommerlad, Michael Stal, “Pattern-Oriented Software
Publisher-Subscriber[7]
                                                                            Architecture Volume 1: A System of Patterns”, John Wiley
Also called the Observer pattern, it is used to synchronize the             & Sons, 1996
information between two components-Publisher and Subscriber.
                                                                      [8]   Douglas C. Schmidt, Michael Stal, Hans Rohert, and Frank
Copying the database from publisher to Subscriber can be a
                                                                            Buschmann, “Pattern-Oriented Software Architecure Volum
typical example. It is used when the pattern encounters a non-stop
                                                                            2: Patterns for Concurrent and Networked Objects”, ,John
talker object, in other words, when overload occurs because of
                                                                            Wiley & Sons, 2000
non-stop Polling.
                                                                      [9]   R. Gusella, S. Zatti: “The Accuracy of the Clock
Composite Message[1]
                                                                            Synchronization Achieved by TEMPO in Berkeley UNIX
This pattern is used for marshaling/un-marshaling data, extending           4.3 BSD”, IEEE Transactions on Software Engineering,
and adding messages you want to transfer while passing through              Vol.15, July 1989
layers. It is also used to create a transmission protocol for each
device(Poller) in environments heterogeneous to the Half-
[10] Timothy H. Harrison, David L. Levine, and Douglas C.            Proceedings of the 9th Workshop on Hot Topics in
     Schmidt, “The Design and Performance of a Real-time             Operating Systems(HotOS IX)
     CORBA Event Service”, Proceedings of OOPSLA’97,
                                                                [12] Jamadagni, Satish, Umesh M.N., “A PUSH download
     Atlanta, Georgia, October, 1997
                                                                     architecture for software defined radios”, 2000 IEEE
[11] Sameer Ajmani, Barbara Liskov, Liuba Shrira, “Scheduling        international symposium on personal wireless
     and Simulation: How to Upgrade Distributed Systems”, In         communication

More Related Content

What's hot

Sa 006 modifiability
Sa 006 modifiabilitySa 006 modifiability
Sa 006 modifiabilityFrank Gielen
 
High Availability og virtualisering, IBM Power Event
High Availability og virtualisering, IBM Power EventHigh Availability og virtualisering, IBM Power Event
High Availability og virtualisering, IBM Power EventIBM Danmark
 
Amarnath Kumar_5.9 Yrs
Amarnath Kumar_5.9 YrsAmarnath Kumar_5.9 Yrs
Amarnath Kumar_5.9 YrsAmarnath Kumar
 
General process Frame work
General process Frame workGeneral process Frame work
General process Frame worklyingfromyou1
 
21. Application Development and Administration in DBMS
21. Application Development and Administration in DBMS21. Application Development and Administration in DBMS
21. Application Development and Administration in DBMSkoolkampus
 
Strassner retherford
Strassner retherfordStrassner retherford
Strassner retherfordNASAPMC
 
3 f6 10_testing
3 f6 10_testing3 f6 10_testing
3 f6 10_testingop205
 
Software Engineering CS-504 Handouts
Software Engineering   CS-504 HandoutsSoftware Engineering   CS-504 Handouts
Software Engineering CS-504 HandoutsSohaib Danish
 
SERVICE LEVEL AGREEMENT BASED FAULT TOLERANT WORKLOAD SCHEDULING IN CLOUD COM...
SERVICE LEVEL AGREEMENT BASED FAULT TOLERANT WORKLOAD SCHEDULING IN CLOUD COM...SERVICE LEVEL AGREEMENT BASED FAULT TOLERANT WORKLOAD SCHEDULING IN CLOUD COM...
SERVICE LEVEL AGREEMENT BASED FAULT TOLERANT WORKLOAD SCHEDULING IN CLOUD COM...ijgca
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programmingkim.mens
 
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)siouxhotornot
 
Mobile app optimization for Battery life, Usability and Data usage
Mobile app optimization for Battery life, Usability and Data usageMobile app optimization for Battery life, Usability and Data usage
Mobile app optimization for Battery life, Usability and Data usageMoe Tanabian
 
Shunra Software Add-on Modules Datasheet
Shunra Software Add-on Modules DatasheetShunra Software Add-on Modules Datasheet
Shunra Software Add-on Modules DatasheetShunra Software
 
Software archiecture lecture04
Software archiecture   lecture04Software archiecture   lecture04
Software archiecture lecture04Luktalja
 
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...Madjid KETFI
 
Cmg2006 paper 6168
Cmg2006 paper 6168Cmg2006 paper 6168
Cmg2006 paper 6168Garland Kan
 
Software Engineering
Software Engineering Software Engineering
Software Engineering JayaKamal
 
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMI
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMIEvolving role of Software,Legacy software,CASE tools,Process Models,CMMI
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMInimmik4u
 

What's hot (20)

Sa 006 modifiability
Sa 006 modifiabilitySa 006 modifiability
Sa 006 modifiability
 
High Availability og virtualisering, IBM Power Event
High Availability og virtualisering, IBM Power EventHigh Availability og virtualisering, IBM Power Event
High Availability og virtualisering, IBM Power Event
 
Amarnath Kumar_5.9 Yrs
Amarnath Kumar_5.9 YrsAmarnath Kumar_5.9 Yrs
Amarnath Kumar_5.9 Yrs
 
General process Frame work
General process Frame workGeneral process Frame work
General process Frame work
 
21. Application Development and Administration in DBMS
21. Application Development and Administration in DBMS21. Application Development and Administration in DBMS
21. Application Development and Administration in DBMS
 
Strassner retherford
Strassner retherfordStrassner retherford
Strassner retherford
 
Ozone presentation
Ozone presentationOzone presentation
Ozone presentation
 
3 f6 10_testing
3 f6 10_testing3 f6 10_testing
3 f6 10_testing
 
Software Engineering CS-504 Handouts
Software Engineering   CS-504 HandoutsSoftware Engineering   CS-504 Handouts
Software Engineering CS-504 Handouts
 
SERVICE LEVEL AGREEMENT BASED FAULT TOLERANT WORKLOAD SCHEDULING IN CLOUD COM...
SERVICE LEVEL AGREEMENT BASED FAULT TOLERANT WORKLOAD SCHEDULING IN CLOUD COM...SERVICE LEVEL AGREEMENT BASED FAULT TOLERANT WORKLOAD SCHEDULING IN CLOUD COM...
SERVICE LEVEL AGREEMENT BASED FAULT TOLERANT WORKLOAD SCHEDULING IN CLOUD COM...
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programming
 
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
 
Introduction
IntroductionIntroduction
Introduction
 
Mobile app optimization for Battery life, Usability and Data usage
Mobile app optimization for Battery life, Usability and Data usageMobile app optimization for Battery life, Usability and Data usage
Mobile app optimization for Battery life, Usability and Data usage
 
Shunra Software Add-on Modules Datasheet
Shunra Software Add-on Modules DatasheetShunra Software Add-on Modules Datasheet
Shunra Software Add-on Modules Datasheet
 
Software archiecture lecture04
Software archiecture   lecture04Software archiecture   lecture04
Software archiecture lecture04
 
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
Model-driven Framework for Dynamic Deployment and Reconfiguration of Componen...
 
Cmg2006 paper 6168
Cmg2006 paper 6168Cmg2006 paper 6168
Cmg2006 paper 6168
 
Software Engineering
Software Engineering Software Engineering
Software Engineering
 
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMI
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMIEvolving role of Software,Legacy software,CASE tools,Process Models,CMMI
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMI
 

Viewers also liked

Joe's Pattern Writing
Joe's Pattern WritingJoe's Pattern Writing
Joe's Pattern WritingYoungSu Son
 
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료Mungyu Choi
 
Vs2013 doxygen 매크로 개발
Vs2013 doxygen 매크로 개발Vs2013 doxygen 매크로 개발
Vs2013 doxygen 매크로 개발민석 강
 
[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신YoungSu Son
 
Android Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + GenymotionAndroid Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + GenymotionYoungSu Son
 
Doxygen 사용법
Doxygen 사용법Doxygen 사용법
Doxygen 사용법YoungSu Son
 
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
 [NEXT] Android 개발 경험 프로젝트 3일차 (Database) [NEXT] Android 개발 경험 프로젝트 3일차 (Database)
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)YoungSu Son
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 YoungSu Son
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기) YoungSu Son
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기YoungSu Son
 
[NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 [NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 YoungSu Son
 
SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법 YoungSu Son
 
카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험Ohgyun Ahn
 
Webservice cache strategy
Webservice cache strategyWebservice cache strategy
Webservice cache strategyDaeMyung Kang
 
코드 리뷰 시스템 소개
코드 리뷰 시스템 소개코드 리뷰 시스템 소개
코드 리뷰 시스템 소개Young-Ho Cha
 

Viewers also liked (15)

Joe's Pattern Writing
Joe's Pattern WritingJoe's Pattern Writing
Joe's Pattern Writing
 
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료
 
Vs2013 doxygen 매크로 개발
Vs2013 doxygen 매크로 개발Vs2013 doxygen 매크로 개발
Vs2013 doxygen 매크로 개발
 
[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신
 
Android Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + GenymotionAndroid Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + Genymotion
 
Doxygen 사용법
Doxygen 사용법Doxygen 사용법
Doxygen 사용법
 
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
 [NEXT] Android 개발 경험 프로젝트 3일차 (Database) [NEXT] Android 개발 경험 프로젝트 3일차 (Database)
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기
 
[NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 [NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법
 
SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법
 
카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험
 
Webservice cache strategy
Webservice cache strategyWebservice cache strategy
Webservice cache strategy
 
코드 리뷰 시스템 소개
코드 리뷰 시스템 소개코드 리뷰 시스템 소개
코드 리뷰 시스템 소개
 

Similar to Half-Push/Half-Polling pattern

Harnessing the Cloud for Performance Testing- Impetus White Paper
Harnessing the Cloud for Performance Testing- Impetus White PaperHarnessing the Cloud for Performance Testing- Impetus White Paper
Harnessing the Cloud for Performance Testing- Impetus White PaperImpetus Technologies
 
System analsis and design
System analsis and designSystem analsis and design
System analsis and designRizwan Kabir
 
Top 8 Trends in Performance Engineering
Top 8 Trends in Performance EngineeringTop 8 Trends in Performance Engineering
Top 8 Trends in Performance EngineeringConvetit
 
Enabling Continuous Quality in Mobile App Development
Enabling Continuous Quality in Mobile App DevelopmentEnabling Continuous Quality in Mobile App Development
Enabling Continuous Quality in Mobile App DevelopmentMatthew Young
 
A research on- Sales force Project- documentation
A research on- Sales force Project- documentationA research on- Sales force Project- documentation
A research on- Sales force Project- documentationPasupathi Ganesan
 
Performance and load testing
Performance and load testingPerformance and load testing
Performance and load testingsonukalpana
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management Systemvivek shah
 
Distributed Software Engineering with Client-Server Computing
Distributed Software Engineering with Client-Server ComputingDistributed Software Engineering with Client-Server Computing
Distributed Software Engineering with Client-Server ComputingHaseeb Rehman
 
1.3 Incremental Model.pptx
1.3 Incremental Model.pptx1.3 Incremental Model.pptx
1.3 Incremental Model.pptxJAYAPRIYAR7
 
College Management System project
College Management System projectCollege Management System project
College Management System projectManish Kushwaha
 
Chapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.pptChapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.pptRayonJ1
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycleNishant Srivastava
 
System Development Life Cycle
System Development Life CycleSystem Development Life Cycle
System Development Life Cyclesourav verma
 
Internet applications unit1
Internet applications unit1Internet applications unit1
Internet applications unit1MSc CST
 
Effektives Consulting - Performance Engineering
Effektives Consulting - Performance EngineeringEffektives Consulting - Performance Engineering
Effektives Consulting - Performance Engineeringhitdhits
 

Similar to Half-Push/Half-Polling pattern (20)

Software process model
Software process modelSoftware process model
Software process model
 
Harnessing the Cloud for Performance Testing- Impetus White Paper
Harnessing the Cloud for Performance Testing- Impetus White PaperHarnessing the Cloud for Performance Testing- Impetus White Paper
Harnessing the Cloud for Performance Testing- Impetus White Paper
 
System analsis and design
System analsis and designSystem analsis and design
System analsis and design
 
Top 8 Trends in Performance Engineering
Top 8 Trends in Performance EngineeringTop 8 Trends in Performance Engineering
Top 8 Trends in Performance Engineering
 
A PeopleSoft Roadmap
A PeopleSoft RoadmapA PeopleSoft Roadmap
A PeopleSoft Roadmap
 
Dark launch
Dark launchDark launch
Dark launch
 
Enabling Continuous Quality in Mobile App Development
Enabling Continuous Quality in Mobile App DevelopmentEnabling Continuous Quality in Mobile App Development
Enabling Continuous Quality in Mobile App Development
 
A research on- Sales force Project- documentation
A research on- Sales force Project- documentationA research on- Sales force Project- documentation
A research on- Sales force Project- documentation
 
Performance and load testing
Performance and load testingPerformance and load testing
Performance and load testing
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management System
 
Sdpl1
Sdpl1Sdpl1
Sdpl1
 
Distributed Software Engineering with Client-Server Computing
Distributed Software Engineering with Client-Server ComputingDistributed Software Engineering with Client-Server Computing
Distributed Software Engineering with Client-Server Computing
 
1.3 Incremental Model.pptx
1.3 Incremental Model.pptx1.3 Incremental Model.pptx
1.3 Incremental Model.pptx
 
Application Deployement Strategies
Application Deployement StrategiesApplication Deployement Strategies
Application Deployement Strategies
 
College Management System project
College Management System projectCollege Management System project
College Management System project
 
Chapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.pptChapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.ppt
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
 
System Development Life Cycle
System Development Life CycleSystem Development Life Cycle
System Development Life Cycle
 
Internet applications unit1
Internet applications unit1Internet applications unit1
Internet applications unit1
 
Effektives Consulting - Performance Engineering
Effektives Consulting - Performance EngineeringEffektives Consulting - Performance Engineering
Effektives Consulting - Performance Engineering
 

More from YoungSu Son

Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴 YoungSu Son
 
Clean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningClean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningYoungSu Son
 
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화YoungSu Son
 
Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) YoungSu Son
 
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)YoungSu Son
 
Singleton 패턴 (김진영 - EVA, 소마에 10기)
Singleton 패턴 (김진영 -  EVA, 소마에 10기) Singleton 패턴 (김진영 -  EVA, 소마에 10기)
Singleton 패턴 (김진영 - EVA, 소마에 10기) YoungSu Son
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 YoungSu Son
 
생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) 생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) YoungSu Son
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) YoungSu Son
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) YoungSu Son
 
DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 YoungSu Son
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
Android 성능 지표와 Oreo 의 개선사항
Android 성능 지표와  Oreo 의 개선사항 Android 성능 지표와  Oreo 의 개선사항
Android 성능 지표와 Oreo 의 개선사항 YoungSu Son
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법YoungSu Son
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기YoungSu Son
 
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경YoungSu Son
 
오픈소스 Jedis 리펙토링 하기 (redis java 라이브러리)
오픈소스 Jedis 리펙토링 하기 (redis java 라이브러리) 오픈소스 Jedis 리펙토링 하기 (redis java 라이브러리)
오픈소스 Jedis 리펙토링 하기 (redis java 라이브러리) YoungSu Son
 
URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표 URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표 YoungSu Son
 
[NEXT] Nextgram Refactoring
[NEXT] Nextgram Refactoring[NEXT] Nextgram Refactoring
[NEXT] Nextgram RefactoringYoungSu Son
 

More from YoungSu Son (20)

Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴
 
Clean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningClean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance Tuning
 
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
 
Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭)
 
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
 
Singleton 패턴 (김진영 - EVA, 소마에 10기)
Singleton 패턴 (김진영 -  EVA, 소마에 10기) Singleton 패턴 (김진영 -  EVA, 소마에 10기)
Singleton 패턴 (김진영 - EVA, 소마에 10기)
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
 
생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) 생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기)
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
 
DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
Android 성능 지표와 Oreo 의 개선사항
Android 성능 지표와  Oreo 의 개선사항 Android 성능 지표와  Oreo 의 개선사항
Android 성능 지표와 Oreo 의 개선사항
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
 
오픈소스 Jedis 리펙토링 하기 (redis java 라이브러리)
오픈소스 Jedis 리펙토링 하기 (redis java 라이브러리) 오픈소스 Jedis 리펙토링 하기 (redis java 라이브러리)
오픈소스 Jedis 리펙토링 하기 (redis java 라이브러리)
 
URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표 URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표
 
[NEXT] Nextgram Refactoring
[NEXT] Nextgram Refactoring[NEXT] Nextgram Refactoring
[NEXT] Nextgram Refactoring
 

Recently uploaded

Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 

Half-Push/Half-Polling pattern

  • 1. Half-Push/Half-Polling Youngsu Son Jinho Jang Jemin Jeon Home Solution Group Samsung Dept. of Computer Science Dept. of Computer Science Electronics Hanyang University Hanyang University arload.son@samsung.com jinhoyo@nate.com luvjjm@gmail.com Sangwon Ko Hyukjoon Lee Jungsun Kim Dept. of Computer Science Dept. of Computer Science Dept. of Computer Science Hanyang University Hanyang University Hanyang University funkcode@gmail.com xenoplo@gmail.com jskim@cse.hanyang.ac.kr ABSTRACT To create constantly evolving software, the upgrading is an 1. INTRODUCTION Software must reflect the changes of the real world. If not, essential factor. There are two ways to upgrade, pushing and software will decays over time. No matter how well-made, polling. Polling has the advantage of keeping the latest versions of software must always be revised based on client’s requirements all the clients, but can cause heavy server load by simultaneously changes and the needs for new services. Due to it, many connections to many clients and unnecessary network traffics. On applications currently support upgrade services in order to the other hand, push causes much less because push can upgrade improve the customer satisfaction. Through this upgrade service, the specific clients, but there is cumbersome monitoring to keep the clients can use the latest services without installing a new stopped clients on latest version. The Half-Push/Half-Polling program on every time. pattern mixes these two different ways, keeping their advantages, eliminating their disadvantages. One of the major issues to consider on upgrade service is data transmission method. In the majority of cases, server resources are Categories and Subject Descriptors limited. For this reason, an efficient data transmission method is D.3.3 [Programming Languages]: Language Contructs and needed. Features – patterns. In client/server model, polling and pushing are generally used as D.2.11 [Software Engineering]: Software Architectures – data transmission methods. However, the polling method can patterns. cause server overhead when many clients request the upgrades simultaneously. And the push method has problems such as failure to complete the upgrade when the client is offline or when General Terms errors occur while upgrading. So the clients that did not upgrade Algorithms, Design, Reliability. must be managed to be upgraded in later time. A more efficient data transmission method, therefore, is needed to Keywords make up for these weak points. In this paper, we present the Half- Upgrade Ticket, Push/Pull Updater push/Half-polling pattern which mitigates the weak points of polling and push methods. The pattern reduces the server overheads. Using distributed update time and scheduling, it also applies suitable upgrades from considering each client’s features. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that 2. BACKGROUND copies bear this notice and the full citation on the first page. To copy In Client-Server Model, Push or Polling are general ways to otherwise, to republish, to post on servers or to redistribute to lists, update clients. Push refers to actively updating clients by the requires prior specific permission. Preliminary versions of these papers server. The server requests access to the clients and pushes data to were presented in a writers’ workshop at the 16th Conference on Pattern them. The advantage of this approach is that you can fully utilize Languages of Programs (PLoP). the server’s resources within the limit of network bandwidth. PLoP’09, August 28-30, Chicago, IL, USA. Copyright 2009 is held by the author(s). ACM 978-1-60558-873-5 However, this method assumes that the client will always be alive. And it also requires the server to keep information about clients. The figure1 shows how Push method works. When some events(ex; upgrade) occur and the server needs to connect to the clients, the server can control the workload autonomously in
  • 2. consideration of its capacity and the bandwidth. Numbers in the On the other hand, In Push method, a client that is turned off or picture represent a sequence of operations. malfunctions at the time of the Push wouldn’t be updated. Let’s take a specific example with the figure below. The server has to update various types(green, yellow, red) of devices that are placed in different location. Some office would have all types of devices but some would not. In this situation, it is possible for the server to manage devices in a way that groups them by device type or location. Figure 1. Push Upgrade Method On the other hand, when using polling method, the clients have the initiative. The clients request data transmission from the server. Because the server is more stable and using this method guarantees the server is alive, the chance of the problem is very low. Figure 3. Office Automation However, in Polling method, as opposed to Push, the clients check repeatedly whether any events have occurred or not. And all of clients would attempt to access to the server at the same time in 4. CONTEXT the worst case because there is no fixed order. The figure below The Upgrade system needs a lot of servers if all of clients must be shows such case. upgraded as soon as possible, such as anti-virus programs. However, in the case where there is no time limitation, like a Windows Update, the server can update clients easily within the limits of its resources regardless of the state of clients. 5. PROBLEM Imagine we are building a data transmission system to send the newest version continuously to the clients. In the client/server model, polling and push methods are generally the used data transmission methods for limited server resource. However, the polling method can cause server and client overhead when many clients request the upgrades simultaneously and check server version periodically. If we adopt push method on the system, we can get the benefit of reducing the overhead used for the scheduling. But push method has problems when the client cannot complete the upgrade, for example when the client is off-line or it encounters an error during upgrading. We, therefore, need an efficient and reliable data Figure 2. Poll Upgrade Method transmission method to maintain the condition of clients using scheduling methods. 3. EXAMPLE For example, let’s assume that we are developing an office 6. FORECES automation system for buildings located closely together in a The following items should be regarded as forces: downtown. There are various types of devices in the system and they are connected to a wired or wireless network. In addition,  Consider that the server has limited throughput to make requirement is to keep the software in each device up-to-date. The upgrade possible. server will provide the latest software via client-server model. In Polling method, each client requests data from the server without  It should be possible to manage various clients by group. considering any other clients. So, it would cause server overload.
  • 3. Clients who fail during the upgrade can upgrade in the  GetUpgradeTime – Receive the upgrade time from future. Pusher.  We need to balance efficiency with reliability.  SetTimer – Set the time assigned from Pusher. However, it does not run the upgrade directly at the assigned time. Instead of that, the Poller calls Pusher’s 7. SOLUTION GetUpgradeTimeSpan() function to provide an upgrade The half-push/half-polling pattern overcomes the disadvantages of window in case the server’s throughput would reach the upgrading based on either push and polling method. limit. Pusher, the upgrade server, uses schedules to distribute the The scheduler implements a scheduling strategy for distributing upgrade time to Pollers(clients) which are on the upgrade list. At the upgrade time. The scheduler component can use different distributed time, the client requests upgrade from the pusher scheduling strategies[10][11] for different clients(Pollers). which then executes the upgrade service. Therefore we can avoid the Non-Stop Talker which polling method invokes. Normally to overcome the disadvantage of push methods, the clients who are 7.2 Dynamics off-line have to be managed separately. But in our pattern, at the time when those clients are booted, the clients request their upgrade time. Because of that, we don’t’ need to manage the clients separately. 7.1 Structure Figure 5. Registration As in Publisher-Subscriber[7], the Poller(client) can register or cancel the execution of the upgrade service by passing its own reference to the Pusher(server). Figure 4. Half-Push/Half-Polling Structure Pusher component is the advanced component that improves existing push functions. This component keeps a list of Pollers that demanded an upgrade and allocates upgrade time.  AttachPoller – This function registers new Pollers(clients). The goal of this function is to add Pollers to PollerList, the scheduling target list.  DetachPoller – This function is for deleting Poller from PollerList.  BeginUpgrade – Entrypoint to start the upgrade. It is the exposed interface to the external source which requested the upgrade.  NotifyUpgrade – Pusher notifies the upgrade process to Figure 6. Upgrade Sequence Diagram selected Pollers. The BeginUpgrade() function is executed by the server  GetUpgradeTimeSpan – Poller calls this function to application to Pusher. assign the upgrade time from pusher after receiving the Then, the Pusher sends the upgrade information(version etc.) upgrade request through NotifyUpgrade from pusher. through AreYouAlive() function to Pollers. The Poller calls the  DoUpgrade – To call PushFiles() for upgrade when the GetUpgradeTime() function when it needs the upgrade after assigned upgrade time of Poller is 0. comparing its version with the pusher’s version. After that, the scheduler is called for allocating the upgrade time interval  PushFiles – To forward the actual upgrade list of files to internally. If the upgrade time, TimeSpan, is set as specific hour Poller. such as 3:04 Pm, a complex time synchronize mechanism[2][9] is needed between Pusher and Poller or Pollers. To avoid that, we Poller is a component which needs the upgrade regularly. It has to set the TimeSpan as time interval such as 300ms, 400ms. have the right Pusher address that Poller can access all the time.
  • 4. When the assigned upgrade time becomes 0, Poller calls the If a standard message format is used, such as XML for DoUpgrade() function. interoperability, a conversion process is required like Marshling/Unmarshaling. This is not suitable for a system that The Pusher creates a list of files and transmits it to the Poller by requires quick responses due to the limited resources. In that case, calling PushFiles(). The Poller doesn’t take files itself. Instead, despite system dependency, we should require a message transfer the Pusher sends them to the Poller in the form of notification. format based on protocols using Binary Method Table[7], such as The reason for this is to obtain flexibility that enables providing COM+, OLE, for performance guarantee. different file information to the Pollers depending on version – even if they have same type. Step 4 : Information from Poller to Pusher should allow extension. But if the assigned upgrade time is more than 0, the Poller waits The information sent to Pusher can be changed according to the until it reaches 0. When it reaches 0, it does not run the upgrade scheduling algorithm or Poller’s feature. Various Pollers are directly. Instead, Poller calls pusher’s GetUpgradeTimeSpan() added in the system and thus, the exchange information is function in case of server’s throughput would reach the limit. In designed for extension. For that reason, it should consider using – such case of server’s throughput reaching the limit, the Poller the Composite Message[1] or the Parameter Object pattern[3]. would get a new upgrade time for server availability. 8. IMPLEMENTATION Step 1 : Collect the characteristics of upgrade targets(Pollers). We could consider the clients (Pollers) that always connect to the network as the upgrade target. However, we should adopt the polling method for clients who are not often connected to the network, such as P2P. Step 2 : Choose the scheduling algorithm considering Quality of Service(QoS). The following QoS[6]should be taken into the consideration when performing–the upgrade time.  Flexibility; any part of system can be upgraded. Figure 7. Composite Message Pattern  Robustness; the risk of error and crash should be minimized. In the Composite Message pattern, the exchange message can be added/removed through Pipes or Filters. And then, it exchanges or  Ease of use; upgrade process should be concise. extends protocol easily. Due to these flexible structures which  Low overhead; it should minimize the impact on system slow down the process, it is not suitable for embedded systems performance. which have limited resources and requires quick response. Step 5 : Consider type, group, or kind of dependencies between  Cost; it should minimize the cost of upgrading the Pollers.  Independence; modules which are not related to In most cases, the system has various Pollers(For example, the upgrade should not be considered. company has many different kinds of mp3 devices or the company  Reliability; Robustness is related to risk during upgrade, manages various version of electronic products). On top of it, Reliability is related at the end of the upgrade. In other there are dependencies among Pollers for certain services. In this words, it should be able to trust that upgrade is done case, to solve the problem, we can make various groups using correctly. Event Channel[10] between Pusher and Poller as in figure 8.  Integrity; it should maintain one status for upgrade, complete or nothing. Upgrading only part of files should not be allowed. This means rollback function should be supported when an error occurs during the upgrade.  Continuity; the upgrade should be run without interruption. It is important to understand QoS for the upgrade. The right scheduling strategy is determined according to the system. If the system deals with a variety of upgrade versions or deadlines, the scheduling becomes important issue in a system like real-time system. Step 3 : Decide the message exchange format.
  • 5. Apartment Number 101 and PLoP Apartment Number 112 – “Range:AptNum:AptNum:0101:AptNum:0112”  In case of appointing type for permission access to Apartment. For example, the type is 3536 as entrance system at PLoP Apartment Number 101 – “RangeAptNum:AptNum:0101:NodeType:3536” Step 6 : Check Poller’s status periodically. When the server(Pusher) distributes the upgrade time though the scheduler, some of the clients are often off-line. Then the server waits for response from clients for a certain time. Because the client is off-line, an incorrect schedule is made which increase total upgrade time. To solve this problem, Alive Check Manager that distinguishes whether the target Pollers(clients) are alive or not is needed as a separate upgrade module. Alive Check Manager sends cycle to the Pollers which are registered. Then those Pollers send the Alive message to the server according to the assigned cycle. For Figure 8. Instance of Event Channel example, if the alive message does not come over the cycle * N times, it is necessary to change the state of Poller to dead and the class EventChannel Poller is removed from the upgrade target list. { ……….. Step 7 : Use the Timer or WatchDog to manage the time // Managed poller list information from the pusher. private List ConsumerList; If Pusher and Poller have absolute time as TimeSpan, a complex private List FilterList; time synchronization mechanism is needed. However, the interval of time is used as TimeSpan in the Half-Push/Half-Polling pattern. public bool AttachConsumer(); Instead of that, either Timer or Watcher(WatchDog)[4]is needed public bool DetachConsumer(); to control the time interval. In addition, current time and the time interval(TimeSpan) must be stored in a file or DB in case of //assign the filter for grouping of various pollers(upgrade system failure. So, we can know whether the upgrade request is target) needed when the system restarts. If the current time is greater than public bool AttachFilter(); the time that we stored on the file or DB, the Poller rechecks public bool DetachFilter(); whether the upgrade is possible to Pusher. //Start the EventChannel service. Step 8 : Consider appropriate File Transmission Mechanisms. public bool Run(); All systems have to use appropriate mechanisms depending on domain or situation. The optimal solution for every //send the poller’s information ( i.e. device own ID, state situation(Silver Bullet) does not exist. When you need to information, App version, Framework version information etc.) upgrade/patch many different kinds of devices, it is necessary to public void NotifyUpgrade(); consider a variety of network environments. Either the Pollers }; which request mass file transfer may exist or the Pollers which The picture and source above are the examples of Event Channel periodically request small amounts of data may exist. To consider structure. this situation, the File Transmission Strategy is chosen according to the type of Poller. To resolve these problems, “JAWS:A The direct dependency between Pusher and Poller is removed Framework for High-Performance Web Servers”[5] provides good because various Pollers are managed with Event Channel as above. solutions. In that study, the asynchronous transfer In other words, this is a more flexible structure–to allow changes mechanism(Proactor)[8] like IOCP has bad performance for when adding/removing new Pollers or when targeting the upgrade transferring small files. groups. In addition, using the filters, the upgrade targets(Pollers) can be grouped into various forms as following items. 9. KNOWN USES  In case of appoingting type of upgrade Poller. For – OMG CORBA Event Service example, the type is 3536 and 3836 – “NodeType:3536”, The Event service of RealTime CORBA it is not for upgrading, “NodeType:3836” but the Event Channel method that replaces push method with pull(polling) method as data transmission method.  In case of appointing resident such as PLoP Apartment Number 101 – “AptNum:0101” – Hybrid Push/Pull Download Model in Software Defined Radios A Software-Defined Radio(SDR) system is a radio  In the event of appointing ouprade Poller group. For communication system where components that have typically example, the range of group is between PLoP been implemented in hardware(e.g. mixers, filters, amplifiers,
  • 6. modulators/demodulators, detectors. etc.) are instead implemented Push/Half-Polling pattern. It is used in various distributed using software on a personal computer or other embedded middleware. computing devices. When a new way of service starts, it is natural Pipe & Filter[7] to replace existing terminals with new ones. However, the SDR performs mostly on Software instead of the existing This pattern is used when adding or filtering messages you want semiconductor. Hybrid Push and Pull[12] which is one of the to transmit flexibly according to the circumstance, used internally down models SDR offers is a good example of Half-Push/Half- in the aforementioned Composite Message. It is also used to filter Polling pattern. unwanted data when building an Event Channel. – Samsung Homevita Broker[7] Homevita, a home networking system from Samsung electronics, adopted the upgrade methods with a mixture of push and polling This pattern removes direct dependency(location information, method. In the Homvita 1.0 version, it took the polling method for platform restrictions, etc.) between server and client. By upgrade. However, it had big overhead by the request of many delegating the location information of Pusher, which is in Poller, devices simultaneously. To avoid the problem, the system adopted to Broker, Poller can remove itself of its direct dependency on the the push upgrade method in the Homevita 2.0 version. After that, Pusher. overhead was reduced. But the system needed a way to monitor dead devices. In the 2.5 version, a mixture of push and polling ACKNOWLEDGMENTS method are adopted. It reduces server overhead. And the devices We thank our shepherd Robert Hanmer for his valuable comments which are alive keep the newest version. that contributed to improve this paper. The EVA (Pattern Evangelist Group), James Chang provided useful improvements 10. RESULTING CONTEXT and corrections. The advantages of this pattern include: REFERENCES – Solving the problem of heavy loads in very short [1] Aamond Sane, Roy Campbell, “Composite Messages: A periods of time caused by the Polling-based upgrade Structural Pattern for Communication between method and benefiting from the Push method which Components”, OOPSLA’95 Workshop on Design Patterns only upgrades specific clients. for Concurrent, Distributed, and Parallel Object-Oriented – Reducing network traffic and load of the server/client Systems, 1995. because it doesn’t need to check the version of the [2] F.Cristian, “Probabilistic Clock Synchronization”, server periodically. Distributed Computing, vol.3., pp.146-158, 1989. – Being able to upgrade specifically selected clients by grouping them. [3] Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, “Refactoring : Improving the Design of Possible disadvantages are: Existing Code”, Addison-Wesley Professional, 1999 – It is not suitable for systems like vaccines that require [4] Robert S. Hanmer, “WatchDog”, Patterns for Fault Tolerant all devices to be upgraded in case of emergency because Software, John Wiley & Sons, October, 2007 the scheduling method used takes server load into account. [5] James C. Hu, Douglas Schmidt, “JAWS: A Framework for – It is impossible to upgrade clients if a problem occurs High-Performance Web Servers”, Domain-Specific on the server(Pusher) while the program is running. Application Frameworks: Frameworks Experience By Reliability must be guaranteed by copying Pusher Industry, John Wiley & Sons, October, 1999 components or using various fault tolerance methods[4]. [6] Michael Hicks, Jonathan T. Moore, Scott Nettles, “Dynamic – It is difficult to apply to a system such as P2P, where Software Updating”, ACM Transactions on Programming server and client information changes frequently. Laguages and Systems(TOPLAS), Voume 27, Issue 6 [7] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter 11. RELATED PATTERNS Sommerlad, Michael Stal, “Pattern-Oriented Software Publisher-Subscriber[7] Architecture Volume 1: A System of Patterns”, John Wiley Also called the Observer pattern, it is used to synchronize the & Sons, 1996 information between two components-Publisher and Subscriber. [8] Douglas C. Schmidt, Michael Stal, Hans Rohert, and Frank Copying the database from publisher to Subscriber can be a Buschmann, “Pattern-Oriented Software Architecure Volum typical example. It is used when the pattern encounters a non-stop 2: Patterns for Concurrent and Networked Objects”, ,John talker object, in other words, when overload occurs because of Wiley & Sons, 2000 non-stop Polling. [9] R. Gusella, S. Zatti: “The Accuracy of the Clock Composite Message[1] Synchronization Achieved by TEMPO in Berkeley UNIX This pattern is used for marshaling/un-marshaling data, extending 4.3 BSD”, IEEE Transactions on Software Engineering, and adding messages you want to transfer while passing through Vol.15, July 1989 layers. It is also used to create a transmission protocol for each device(Poller) in environments heterogeneous to the Half-
  • 7. [10] Timothy H. Harrison, David L. Levine, and Douglas C. Proceedings of the 9th Workshop on Hot Topics in Schmidt, “The Design and Performance of a Real-time Operating Systems(HotOS IX) CORBA Event Service”, Proceedings of OOPSLA’97, [12] Jamadagni, Satish, Umesh M.N., “A PUSH download Atlanta, Georgia, October, 1997 architecture for software defined radios”, 2000 IEEE [11] Sameer Ajmani, Barbara Liskov, Liuba Shrira, “Scheduling international symposium on personal wireless and Simulation: How to Upgrade Distributed Systems”, In communication