SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
Half-Push/Half-Polling
           Youngsu Son                                               Jinho Jang                                    Jemin Jeon
      Home Solution Group                                  Dept. of Computer Science                      Dept. of Computer Science
      Samsung 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 becomes 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 load on server when
                                                                            changes and the needs for new services. Due to it, many
simultaneously connected by the clients, thus causing heavy
                                                                            applications currently support upgrade services in order to
network traffics. On the other hand, push could cause much less
                                                                            improve the customer satisfaction. Through this upgrade service,
load since it can upgrade the specific clients that choose to be
                                                                            the clients can use the latest services without installing program on
upgraded. However, there are cumbersome monitorings it has to
                                                                            every update.
deal with, which keeps track of the stopped clients. I suggest Half-
Push/Half-Polling pattern. Mixing the two patterns, we can keep             One of the major issues to consider on upgrade service is data
their advantages while eliminating their disadvantages.                     transmission method. In the majority of cases, server resources are
                                                                            limited. For this reason, an efficient data transmission method is
Categories and Subject Descriptors                                          needed.
D.3.3 [Programming Languages]: Language Contructs and                       In client/server model, polling and pushing are generally used as
Features – patterns.                                                        data transmission methods. However, the polling method can
D.2.11 [Software Engineering]: Software Architectures –                     cause server overhead when many clients request the upgrades
patterns.                                                                   simultaneously. And the push method has problems such as
                                                                            failure to complete the upgrade when the client is offline or when
                                                                            errors occur while upgrading. So the clients that did not upgrade
General Terms                                                               must be managed to be upgraded in later time.
Algorithms, Design, Reliability.
                                                                            A more efficient data transmission method, therefore, is needed to
                                                                            make up for these weak points. In this paper, we present the Half-
Keywords                                                                    push/Half-polling pattern which complements the weak points of
Upgrade Ticket, Push/Pull Updater
                                                                            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   2. BACKGROUND
not made or distributed for profit or commercial advantage and that         In Client-Server Model, Push or Polling are general ways to update
copies bear this notice and the full citation on the first page. To copy    clients. Push refers to actively updating clients by the server. The
otherwise, to republish, to post on servers or to redistribute to lists,    server requests access to the clients and pushes data to them. The
requires prior specific permission. Preliminary versions of these papers
                                                                            advantage of this approach is that you can fully utilize the server’s
were presented in a writers’ workshop at the 16th Conference on Pattern
Languages of Programs (PLoP).                                               resources within the limit of network bandwidth. However, this
PLoP’09, August 28-30, Chicago, IL, USA. Copyright 2009 is held by the      method assumes that the client will always be alive. And it also
author(s). ACM 978-1-60558-873-5                                            requires the server to keep information of 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            method, each client requests data from the server without
consideration of its capacity and the bandwidth. Numbers in the         considering any other clients. So, it would cause server overload.
picture represent a sequence of operations.                             On the other hand, in Push method, a client that is turned off or
                                                                        malfunctions at the time of upgrade 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
initiative. The clients request data transmission to the server.
Because the server is more stable and using this method
guarantees the server being alive, the chance of the problem is
very low.
However, in Polling method, as opposed to Push, the clients check                           Figure 3. Office Automation
repeatedly whether any events have occurred or not. And all of
clients would attempt to access to the server at the same time in
the worst case because there is no fixed order. The figure below
                                                                        4. CONTEXT
shows such case.                                                        The Upgrade system needs a lot of servers if all of clients must be
                                                                        upgraded as soon as possible, such as anti-virus programs.
                                                                        However, in the case where there is no time limitation, like
                                                                        Windows Update, the server should be able to update clients
                                                                        easily within the limit of 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 by periods.
                                                                        If we adopt push method on the system, we can get the benefit
                                                                        from reducing the overhead using 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
                  Figure 2. Poll Upgrade Method
                                                                        error during upgrading. We, therefore, need an efficient and
                                                                        reliable data transmission method to maintain the condition of
3. EXAMPLE                                                              clients using scheduling methods.
For example, let’s assume that we are developing an office
automation system for buildings located closely together in a
downtown. There are various types of devices in the system and          6. FORECES
they are connected to a wired or wireless network. In addition, it is   The following items should be regarded as forces:
required to keep software in each device up-to-date. The server                  Consider that the server has limited throughput to make
will provide the latest software via client-server model. In Polling              upgrade possible.
    It should be possible to manage various clients by group.    Poller is a component which needs the upgrade regularly. It has to
                                                                       have the right Pusher address that Poller can access all the time.
         Clients who failed during the upgrade can upgrade in the
          future.                                                              GetUpgradeTime – Receive the upgrade time from
                                                                                Pusher.
         We need to balance efficiency with reliability.
                                                                               SetTimer – Set the time assigned from Pusher. However,
7. SOLUTION                                                                     it does not run the upgrade directly at the assigned time.
                                                                                Instead of that, the Poller calls Pusher’s
The half-push/half-polling pattern overcomes the disadvantages of
                                                                                GetUpgradeTimeSpan() function in case that the
upgrading based on either push and polling method.
                                                                                server’s throughput would reach the 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 additionally. But in our pattern, at the
time when those clients are booted, the clients request the 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 the Poller list that
demanded the 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 application
         GetUpgradeTimeSpan – Poller calls this function to           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 set        scheduling becomes important issue in a system like real-time
the TimeSpan as time interval such as 300ms, 400ms.                       system.
When the assigned upgrade time becomes 0, Poller calls the                Step 3 : Decide the message exchange format.
DoUpgrade() function.
                                                                          If a standard message format is used, such as XML for
The Pusher creates a list of files and transmits it to the Poller by      interoperability, a conversion process is required like
calling PushFiles(). The Poller doesn’t take files itself. Instead, the   Marshling/Unmarshaling. This is not suitable for a system that
Pusher sends them to the Poller in the form of notification. The          requires quick responses due to the limited resources. In that case,
reason for this is to obtain flexibility that enables providing           despite system dependency, we should require a message transfer
different file information to the Pollers depending on version –          format based on protocols using Binary Method Table[7], such as
even if they have same type.                                              COM+, OLE, for performance guarantee.
But if the assigned upgrade time is more than 0, the Poller waits         Step 4 : Should build care of information from Poller to Pusher for
until it reaches 0. When it reaches 0, it does not run the upgrade        extension.
directly. Instead, Poller calls pusher’s GetUpgradeTimeSpan()
                                                                          The information sent to Pusher can be changed according to the
function in case of server’s throughput would reach the limit. In
                                                                          scheduling algorithm or Poller’s feature. Various Pollers are added
such case of server’s throughput reaching the limit, the Poller
                                                                          in the system and thus, the exchange information is designed for
would get a new upgrade time for server availability.
                                                                          extension. For that reason, it should consider using –the
                                                                          Composite Message[1] or the Parameter Object pattern[3].
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.
         Robustness; the risk of error and crash should be
          minimized.
                                                                                        Figure 7. Composite Message Pattern
         Ease of use; upgrade process should be concise.
                                                                          In the Composite Message pattern, the exchange message can be
         Low overhead; it should minimize the impact on system           added/removed through Pipes or Filters. And then, it exchanges or
          performance.                                                    extends protocol easily. Due to these flexible structures which
                                                                          slow down the process, it is not suitable for embedded systems
         Cost; it should minimize the cost of upgrading                  which have limited resources and requires quick response.
         Independence; modules which are not related to                  Step 5 : Consider type, group, or kind of dependencies between
          upgrade should not be considered.                               the Pollers.
         Reliability; Robustness is related to risk during upgrade,      In most cases, the system has various Pollers(For example, the
          Reliability is related at the end of the upgrade. In other      company has many different kinds of mp3 devices or the
          words, it should be able to trust that upgrade is done          company manages various version of electronic products). On top
          correctly.                                                      of it, there are dependencies among Pollers for certain services. In
         Integrity; it should maintain one status for upgrade,           this case, to solve the problem, we can make various groups using
          complete or nothing. Upgrading only part of files should        Event Channel[10] between Pusher and Poller as in figure 8.
          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
    In the event of appointing ouprade Poller group. For
                                                                                 example, the range of group is between PLoP
                                                                                 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 the response from clients for a certain time. Because the
                                                                       client is off-line, wrong scheduling is made and the increase of
                                                                       total upgrade time occurs.
                                                                       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
                 Figure 8. Instance of Event Channel
                                                                       Pollers which are registered. Then those Pollers send the Alive
                                                                       message to the server according to the assigned cycle. For
class EventChannel
                                                                       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
   ………..
                                                                       Poller is removed from the upgrade target list.
   // Managed poller list
   private List ConsumerList;                                          Step 7 : Use the Timer or WatchDog to manage the time
   private List FilterList;                                            information from the pusher.

     public bool AttachConsumer();                                     If Pusher and Poller have absolute time as TimeSpan, a complex
     public bool DetachConsumer();                                     time synchronization mechanism is needed. However, the interval
                                                                       of time is used as TimeSpan in the Half-Push/Half-Polling pattern.
     //assign the filter for grouping of various pollers(upgrade       Instead of that, either Timer or Watcher(WatchDog)[4]is needed
     target)                                                           to control the time interval. In addition, current time and the time
     public bool AttachFilter();                                       interval(TimeSpan) must be stored in a file or DB in case of
     public bool DetachFilter();                                       system failure. So, we can know whether the upgrade request is
                                                                       needed with the information when the system restarts. If the
     //Start the EventChannel service.                                 current time is greater than the time that we stored on the file or
     public bool Run();                                                DB, the Poller rechecks whether the upgrade is possible to Pusher.
                                                                       Step 8 : Consider appropriate File Transmission Mechanisms.
     //send the poller’s information ( i.e. device own ID, state
     information, App version, Framework version information           All systems have to use appropriate mechanisms depending on
     etc.)                                                             domain or situation. The optimal solution for every situation(Silver
     public void NotifyUpgrade();                                      Bullet) does not exist. When you need to upgrade/patch many
};                                                                     different kinds of devices, it is necessary to consider a variety of
                                                                       network environments. Either the Pollers which request mass file
Above the picture and source are the examples of Event Chanel          transfer may exist or the Pollers which periodically request small
structure.                                                             amounts of data may exist. To consider this situation, the File
The direct dependency between Pusher and Poller is removed             Transmission Strategy is chosen according to the type of Poller.
because various Pollers are managed with Event Channel as above.       To resolve these problems, “JAWS:A Framework for High-
In other words, this is a more flexible structure–to allow changes     Performance Web Servers”[5] provides good solutions. In that
when adding/removing new Pollers or when targeting the upgrade         study, the asynchronous transfer mechanism(Proactor)[8] like
groups. In addition, using the filters, the upgrade targets(Pollers)   IOCP has bad performance for transferring small files.
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, but
            “NodeType:3836”                                            the Event Channel method that replaces push method with
           In case of appointing resident such as PLoP Apartment      pull(polling) method as data transmission method.
            Number 101 – “AptNum:0101”                                 – Hybrid Push/Pull Download Model in Software Defined Radios
A Software-Defined Radio(SDR) system is a radio                           Composite Message[1]
communication system where components that have typically
                                                                          This pattern is used for marshaling/un-marshaling data, extending
been implemented in hardware(e.g. mixers, filters, amplifiers,
                                                                          and adding messages you want to transfer while passing through
modulators/demodulators, detectors. etc.) are instead implemented
                                                                          layers. It is also used to create a transmission protocol for each
using software on a personal computer or other embedded
                                                                          device(Poller) in environments heterogeneous to the Half-
computing devices. When a new way of service starts, it is natural
                                                                          Push/Half-Polling pattern. It is used in various distributed
to replace existing terminals with new ones. However, the SDR
                                                                          middleware.
performs mostly on Software instead of the existing
semiconductor. Hybrid Push and Pull[12] which is one of the               Pipe & Filter[7]
down models SDR offers is a good example of Half-Push/Half-
Polling pattern.                                                          This pattern is used when adding or filtering messages you want to
                                                                          transmit flexibly according to the circumstance, used internally in
– Samsung Homevita                                                        the aforementioned Composite Message. It is also used to filter
Homevita, a home networking system from Samsung electronics,              unwanted data when building an Event Channel.
adopted the upgrade methods with a mixture of push and polling
method. In the Homvita 1.0 version, it took the polling method for        Broker[7]
upgrade in the Homevita 1.0 version. However, it had big                  This pattern removes direct dependency(location information,
overhead by the request of many devices simultaneously. To                platform restrictions, etc.) between server and client. By delegating
avoid the problem, the system adopted the push upgrade method             the location information of Pusher, which is in Poller, to Broker,
in the Homevita 2.0 version. After that, overhead was reduced. But        Poller can remove itself of its direct dependency on the Pusher.
the system needed a way to monitor dead devices. In the 2.5
version, a mixture of push and polling method are adopted. It             ACKNOWLEDGMENTS
reduces server overhead. And the devices which are alive keep the         We thank our shepherd Robert Hanmer for his valuable comments
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:
     –    Solving the problem of heavy loads in very short periods        REFERENCES
          of time caused by the Polling-based upgrade method              [1]    Aamond Sane, Roy Campbell, “Composite Messages: A
          and benefiting from the Push method which only                        Structural Pattern for Communication between
          upgrades specific clients.                                            Components”, OOPSLA’95 Workshop on Design Patterns
                                                                                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
          server periodically.                                            [2]    F.Cristian, “Probabilistic Clock Synchronization”,
                                                                                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,
Possible disadvantages are:                                                     Don Roberts, “Refactoring : Improving the Design of
                                                                                Existing Code”, Addison-Wesley Professional, 1999
     –    It is not suitable for systems like vaccines that require all
          devices to be upgraded in case of emergency because             [4]   Robert S. Hanmer, “WatchDog”, Patterns for Fault Tolerant
          the scheduling method used takes server load into                     Software, WILEY, 2007
          account.
                                                                          [5]   James C. Hu, Douglas Schmidt, “JAWS: A Framework for
     –    It is impossible to upgrade clients if a problem occurs on            High-Performance Web Servers”, Domain-Specific
          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
11. RELATED PATTERNS                                                      [7]   Frank Buschmann, Regine Meunier, Hans Rohnert, Peter
Publisher-Subscriber[7]                                                         Sommerlad, Michael Stal, “Pattern-Oriented Software
                                                                                Architecture Volume 1: A System of Patterns”, WILEY,
Also called the Observer pattern, it is used to synchronize the
                                                                                1996
information between two components-Publisher and Subscriber.
Copying the database from publisher to Subscriber can be a                [8]   Douglas C. Schmidt, Michael Stal, Hans Rohert, and Frank
typical example. It is used when the pattern encounters a non-stop              Buschmann, “Pattern-Oriented Software Architecure Volum
talker object, in other words, when overload occurs because of                  2: Patterns for Concurrent and Networked Objects”, WILEY,
non-stop Polling.                                                               2000
[9]   R. Gusella, S. Zatti: “The Accuracy of the Clock           [11] Sameer Ajmani, Barbara Liskov, Liuba Shrira, “Scheduling
      Synchronization Achieved by TEMPO in Berkeley UNIX 4.3          and Simulation: How to Upgrade Distributed Systems”, In
      BSD”, IEEE Transactions on Software Engineering, Vol.15,        Proceedings of the 9th Workshop on Hot Topics in Operating
      July 1989                                                       Systems(HotOS IX)
[10] Timothy H. Harrison, David L. Levine, and Douglas C.        [12] Jamadagni, Satish, Umesh M.N., “A PUSH download
     Schmidt, “The Design and Performance of a Real-time              architecture for software defined radios”, 2000 IEEE
     CORBA Event Service”, Proceedings of OOPSLA’97,                  international symposium on personal wireless
     Atlanta, Georgia, October, 1997                                  communication

Contenu connexe

Tendances

Software Engineering Large Practical coursework
Software Engineering Large Practical courseworkSoftware Engineering Large Practical coursework
Software Engineering Large Practical courseworkStephen Gilmore
 
Lead Allocation System - Attribute Driven Design (ADD)
Lead Allocation System - Attribute Driven Design (ADD)Lead Allocation System - Attribute Driven Design (ADD)
Lead Allocation System - Attribute Driven Design (ADD)Amin Bandeali
 
Software Engineering
Software Engineering Software Engineering
Software Engineering JayaKamal
 
Lead Allocation System's Attribute Driven Design (ADD)
Lead Allocation System's Attribute Driven Design (ADD)Lead Allocation System's Attribute Driven Design (ADD)
Lead Allocation System's Attribute Driven Design (ADD)Amin Bandeali
 
SE2_Lec 23_Introduction to Cloud Computing
SE2_Lec 23_Introduction to Cloud ComputingSE2_Lec 23_Introduction to Cloud Computing
SE2_Lec 23_Introduction to Cloud ComputingAmr E. Mohamed
 
Unit IV Software Engineering
Unit IV Software EngineeringUnit IV Software Engineering
Unit IV Software EngineeringNandhini S
 
Agile MDD
Agile MDDAgile MDD
Agile MDDfntnhd
 
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
 
5 rqm gdd-sharmila-ramesh
5 rqm gdd-sharmila-ramesh5 rqm gdd-sharmila-ramesh
5 rqm gdd-sharmila-rameshIBM
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programmingkim.mens
 
Software Engineering
 Software Engineering  Software Engineering
Software Engineering JayaKamal
 
3 f6 10_testing
3 f6 10_testing3 f6 10_testing
3 f6 10_testingop205
 
Checking the health of your active directory enviornment
Checking the health of your active directory enviornmentChecking the health of your active directory enviornment
Checking the health of your active directory enviornmentSpiffy
 
The real time publisher subscriber inter-process communication model for dist...
The real time publisher subscriber inter-process communication model for dist...The real time publisher subscriber inter-process communication model for dist...
The real time publisher subscriber inter-process communication model for dist...yancha1973
 
Software Engineering
Software Engineering Software Engineering
Software Engineering JayaKamal
 
Chapter 5 software design
Chapter 5 software designChapter 5 software design
Chapter 5 software designPiyush Gogia
 
Eight deadly defects in systems engineering and how to fix them
Eight deadly defects in systems engineering and how to fix themEight deadly defects in systems engineering and how to fix them
Eight deadly defects in systems engineering and how to fix themJoseph KAsser
 

Tendances (20)

Software Engineering Large Practical coursework
Software Engineering Large Practical courseworkSoftware Engineering Large Practical coursework
Software Engineering Large Practical coursework
 
Lead Allocation System - Attribute Driven Design (ADD)
Lead Allocation System - Attribute Driven Design (ADD)Lead Allocation System - Attribute Driven Design (ADD)
Lead Allocation System - Attribute Driven Design (ADD)
 
Software Engineering
Software Engineering Software Engineering
Software Engineering
 
Lead Allocation System's Attribute Driven Design (ADD)
Lead Allocation System's Attribute Driven Design (ADD)Lead Allocation System's Attribute Driven Design (ADD)
Lead Allocation System's Attribute Driven Design (ADD)
 
SE2_Lec 23_Introduction to Cloud Computing
SE2_Lec 23_Introduction to Cloud ComputingSE2_Lec 23_Introduction to Cloud Computing
SE2_Lec 23_Introduction to Cloud Computing
 
Unit IV Software Engineering
Unit IV Software EngineeringUnit IV Software Engineering
Unit IV Software Engineering
 
Agile MDD
Agile MDDAgile MDD
Agile MDD
 
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)
 
5 rqm gdd-sharmila-ramesh
5 rqm gdd-sharmila-ramesh5 rqm gdd-sharmila-ramesh
5 rqm gdd-sharmila-ramesh
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programming
 
Software Engineering
 Software Engineering  Software Engineering
Software Engineering
 
PSResume
PSResumePSResume
PSResume
 
Unit03: Process and Business Models
Unit03: Process and Business ModelsUnit03: Process and Business Models
Unit03: Process and Business Models
 
3 f6 10_testing
3 f6 10_testing3 f6 10_testing
3 f6 10_testing
 
Checking the health of your active directory enviornment
Checking the health of your active directory enviornmentChecking the health of your active directory enviornment
Checking the health of your active directory enviornment
 
The real time publisher subscriber inter-process communication model for dist...
The real time publisher subscriber inter-process communication model for dist...The real time publisher subscriber inter-process communication model for dist...
The real time publisher subscriber inter-process communication model for dist...
 
Software Engineering
Software Engineering Software Engineering
Software Engineering
 
Resume
ResumeResume
Resume
 
Chapter 5 software design
Chapter 5 software designChapter 5 software design
Chapter 5 software design
 
Eight deadly defects in systems engineering and how to fix them
Eight deadly defects in systems engineering and how to fix themEight deadly defects in systems engineering and how to fix them
Eight deadly defects in systems engineering and how to fix them
 

En vedette

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
 

En vedette (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
 
코드 리뷰 시스템 소개
코드 리뷰 시스템 소개코드 리뷰 시스템 소개
코드 리뷰 시스템 소개
 

Similaire à Efficient Half-Push/Half-Polling Upgrade 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
 
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
 
Internet applications unit1
Internet applications unit1Internet applications unit1
Internet applications unit1MSc CST
 
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
 
Effektives Consulting - Performance Engineering
Effektives Consulting - Performance EngineeringEffektives Consulting - Performance Engineering
Effektives Consulting - Performance Engineeringhitdhits
 
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
 
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
 
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
 
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
 
1.3 Incremental Model.pptx
1.3 Incremental Model.pptx1.3 Incremental Model.pptx
1.3 Incremental Model.pptxJAYAPRIYAR7
 
STATISTICAL ANALYSIS FOR PERFORMANCE COMPARISON
STATISTICAL ANALYSIS FOR PERFORMANCE COMPARISONSTATISTICAL ANALYSIS FOR PERFORMANCE COMPARISON
STATISTICAL ANALYSIS FOR PERFORMANCE COMPARISONijseajournal
 
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
 

Similaire à Efficient Half-Push/Half-Polling Upgrade Pattern (20)

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
 
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
 
Internet applications unit1
Internet applications unit1Internet applications unit1
Internet applications unit1
 
System analsis and design
System analsis and designSystem analsis and design
System analsis and design
 
Faq
FaqFaq
Faq
 
Top 8 Trends in Performance Engineering
Top 8 Trends in Performance EngineeringTop 8 Trends in Performance Engineering
Top 8 Trends in Performance Engineering
 
Effektives Consulting - Performance Engineering
Effektives Consulting - Performance EngineeringEffektives Consulting - Performance Engineering
Effektives Consulting - Performance Engineering
 
Performance and load testing
Performance and load testingPerformance and load testing
Performance and load testing
 
Dark launch
Dark launchDark launch
Dark launch
 
Software process model
Software process modelSoftware process model
Software process model
 
A PeopleSoft Roadmap
A PeopleSoft RoadmapA PeopleSoft Roadmap
A PeopleSoft Roadmap
 
Sdpl1
Sdpl1Sdpl1
Sdpl1
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management System
 
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...
 
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...
 
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...
 
1.3 Incremental Model.pptx
1.3 Incremental Model.pptx1.3 Incremental Model.pptx
1.3 Incremental Model.pptx
 
STATISTICAL ANALYSIS FOR PERFORMANCE COMPARISON
STATISTICAL ANALYSIS FOR PERFORMANCE COMPARISONSTATISTICAL ANALYSIS FOR PERFORMANCE COMPARISON
STATISTICAL ANALYSIS FOR PERFORMANCE COMPARISON
 
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
 
Unit 5.pptx
Unit 5.pptxUnit 5.pptx
Unit 5.pptx
 

Plus de 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
 

Plus de 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
 

Dernier

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Dernier (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

Efficient Half-Push/Half-Polling Upgrade Pattern

  • 1. Half-Push/Half-Polling Youngsu Son Jinho Jang Jemin Jeon Home Solution Group Dept. of Computer Science Dept. of Computer Science Samsung 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 becomes 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 load on server when changes and the needs for new services. Due to it, many simultaneously connected by the clients, thus causing heavy applications currently support upgrade services in order to network traffics. On the other hand, push could cause much less improve the customer satisfaction. Through this upgrade service, load since it can upgrade the specific clients that choose to be the clients can use the latest services without installing program on upgraded. However, there are cumbersome monitorings it has to every update. deal with, which keeps track of the stopped clients. I suggest Half- Push/Half-Polling pattern. Mixing the two patterns, we can keep One of the major issues to consider on upgrade service is data their advantages while eliminating their disadvantages. transmission method. In the majority of cases, server resources are limited. For this reason, an efficient data transmission method is Categories and Subject Descriptors needed. D.3.3 [Programming Languages]: Language Contructs and In client/server model, polling and pushing are generally used as Features – patterns. data transmission methods. However, the polling method can D.2.11 [Software Engineering]: Software Architectures – cause server overhead when many clients request the upgrades patterns. simultaneously. And the push method has problems such as failure to complete the upgrade when the client is offline or when errors occur while upgrading. So the clients that did not upgrade General Terms must be managed to be upgraded in later time. Algorithms, Design, Reliability. A more efficient data transmission method, therefore, is needed to make up for these weak points. In this paper, we present the Half- Keywords push/Half-polling pattern which complements the weak points of Upgrade Ticket, Push/Pull Updater 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 2. BACKGROUND not made or distributed for profit or commercial advantage and that In Client-Server Model, Push or Polling are general ways to update copies bear this notice and the full citation on the first page. To copy clients. Push refers to actively updating clients by the server. The otherwise, to republish, to post on servers or to redistribute to lists, server requests access to the clients and pushes data to them. The requires prior specific permission. Preliminary versions of these papers advantage of this approach is that you can fully utilize the server’s were presented in a writers’ workshop at the 16th Conference on Pattern Languages of Programs (PLoP). resources within the limit of network bandwidth. However, this PLoP’09, August 28-30, Chicago, IL, USA. Copyright 2009 is held by the method assumes that the client will always be alive. And it also author(s). ACM 978-1-60558-873-5 requires the server to keep information of clients. The figure1 shows how Push method works. When some events(ex; upgrade) occur and the server needs to connect to the
  • 2. clients, the server can control the workload autonomously in method, each client requests data from the server without consideration of its capacity and the bandwidth. Numbers in the considering any other clients. So, it would cause server overload. picture represent a sequence of operations. On the other hand, in Push method, a client that is turned off or malfunctions at the time of upgrade 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 initiative. The clients request data transmission to the server. Because the server is more stable and using this method guarantees the server being alive, the chance of the problem is very low. However, in Polling method, as opposed to Push, the clients check Figure 3. Office Automation repeatedly whether any events have occurred or not. And all of clients would attempt to access to the server at the same time in the worst case because there is no fixed order. The figure below 4. CONTEXT shows such case. The Upgrade system needs a lot of servers if all of clients must be upgraded as soon as possible, such as anti-virus programs. However, in the case where there is no time limitation, like Windows Update, the server should be able to update clients easily within the limit of 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 by periods. If we adopt push method on the system, we can get the benefit from reducing the overhead using 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 Figure 2. Poll Upgrade Method error during upgrading. We, therefore, need an efficient and reliable data transmission method to maintain the condition of 3. EXAMPLE clients using scheduling methods. For example, let’s assume that we are developing an office automation system for buildings located closely together in a downtown. There are various types of devices in the system and 6. FORECES they are connected to a wired or wireless network. In addition, it is The following items should be regarded as forces: required to keep software in each device up-to-date. The server  Consider that the server has limited throughput to make will provide the latest software via client-server model. In Polling upgrade possible.
  • 3. It should be possible to manage various clients by group. Poller is a component which needs the upgrade regularly. It has to have the right Pusher address that Poller can access all the time.  Clients who failed during the upgrade can upgrade in the future.  GetUpgradeTime – Receive the upgrade time from Pusher.  We need to balance efficiency with reliability.  SetTimer – Set the time assigned from Pusher. However, 7. SOLUTION it does not run the upgrade directly at the assigned time. Instead of that, the Poller calls Pusher’s The half-push/half-polling pattern overcomes the disadvantages of GetUpgradeTimeSpan() function in case that the upgrading based on either push and polling method. server’s throughput would reach the 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 additionally. But in our pattern, at the time when those clients are booted, the clients request the 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 the Poller list that demanded the 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 application  GetUpgradeTimeSpan – Poller calls this function to 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
  • 4. needed between Pusher and Poller or Pollers. To avoid that, we set scheduling becomes important issue in a system like real-time the TimeSpan as time interval such as 300ms, 400ms. system. When the assigned upgrade time becomes 0, Poller calls the Step 3 : Decide the message exchange format. DoUpgrade() function. If a standard message format is used, such as XML for The Pusher creates a list of files and transmits it to the Poller by interoperability, a conversion process is required like calling PushFiles(). The Poller doesn’t take files itself. Instead, the Marshling/Unmarshaling. This is not suitable for a system that Pusher sends them to the Poller in the form of notification. The requires quick responses due to the limited resources. In that case, reason for this is to obtain flexibility that enables providing despite system dependency, we should require a message transfer different file information to the Pollers depending on version – format based on protocols using Binary Method Table[7], such as even if they have same type. COM+, OLE, for performance guarantee. But if the assigned upgrade time is more than 0, the Poller waits Step 4 : Should build care of information from Poller to Pusher for until it reaches 0. When it reaches 0, it does not run the upgrade extension. directly. Instead, Poller calls pusher’s GetUpgradeTimeSpan() The information sent to Pusher can be changed according to the function in case of server’s throughput would reach the limit. In scheduling algorithm or Poller’s feature. Various Pollers are added such case of server’s throughput reaching the limit, the Poller in the system and thus, the exchange information is designed for would get a new upgrade time for server availability. extension. For that reason, it should consider using –the Composite Message[1] or the Parameter Object pattern[3]. 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.  Robustness; the risk of error and crash should be minimized. Figure 7. Composite Message Pattern  Ease of use; upgrade process should be concise. In the Composite Message pattern, the exchange message can be  Low overhead; it should minimize the impact on system added/removed through Pipes or Filters. And then, it exchanges or performance. extends protocol easily. Due to these flexible structures which slow down the process, it is not suitable for embedded systems  Cost; it should minimize the cost of upgrading which have limited resources and requires quick response.  Independence; modules which are not related to Step 5 : Consider type, group, or kind of dependencies between upgrade should not be considered. the Pollers.  Reliability; Robustness is related to risk during upgrade, In most cases, the system has various Pollers(For example, the Reliability is related at the end of the upgrade. In other company has many different kinds of mp3 devices or the words, it should be able to trust that upgrade is done company manages various version of electronic products). On top correctly. of it, there are dependencies among Pollers for certain services. In  Integrity; it should maintain one status for upgrade, this case, to solve the problem, we can make various groups using complete or nothing. Upgrading only part of files should Event Channel[10] between Pusher and Poller as in figure 8. 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
  • 5. In the event of appointing ouprade Poller group. For example, the range of group is between PLoP 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 the response from clients for a certain time. Because the client is off-line, wrong scheduling is made and the increase of total upgrade time occurs. 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 Figure 8. Instance of Event Channel Pollers which are registered. Then those Pollers send the Alive message to the server according to the assigned cycle. For class EventChannel 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 ……….. Poller is removed from the upgrade target list. // Managed poller list private List ConsumerList; Step 7 : Use the Timer or WatchDog to manage the time private List FilterList; information from the pusher. public bool AttachConsumer(); If Pusher and Poller have absolute time as TimeSpan, a complex public bool DetachConsumer(); time synchronization mechanism is needed. However, the interval of time is used as TimeSpan in the Half-Push/Half-Polling pattern. //assign the filter for grouping of various pollers(upgrade Instead of that, either Timer or Watcher(WatchDog)[4]is needed target) to control the time interval. In addition, current time and the time public bool AttachFilter(); interval(TimeSpan) must be stored in a file or DB in case of public bool DetachFilter(); system failure. So, we can know whether the upgrade request is needed with the information when the system restarts. If the //Start the EventChannel service. current time is greater than the time that we stored on the file or public bool Run(); DB, the Poller rechecks whether the upgrade is possible to Pusher. Step 8 : Consider appropriate File Transmission Mechanisms. //send the poller’s information ( i.e. device own ID, state information, App version, Framework version information All systems have to use appropriate mechanisms depending on etc.) domain or situation. The optimal solution for every situation(Silver public void NotifyUpgrade(); Bullet) does not exist. When you need to upgrade/patch many }; different kinds of devices, it is necessary to consider a variety of network environments. Either the Pollers which request mass file Above the picture and source are the examples of Event Chanel transfer may exist or the Pollers which periodically request small structure. amounts of data may exist. To consider this situation, the File The direct dependency between Pusher and Poller is removed Transmission Strategy is chosen according to the type of Poller. because various Pollers are managed with Event Channel as above. To resolve these problems, “JAWS:A Framework for High- In other words, this is a more flexible structure–to allow changes Performance Web Servers”[5] provides good solutions. In that when adding/removing new Pollers or when targeting the upgrade study, the asynchronous transfer mechanism(Proactor)[8] like groups. In addition, using the filters, the upgrade targets(Pollers) IOCP has bad performance for transferring small files. 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, but “NodeType:3836” the Event Channel method that replaces push method with  In case of appointing resident such as PLoP Apartment pull(polling) method as data transmission method. Number 101 – “AptNum:0101” – Hybrid Push/Pull Download Model in Software Defined Radios
  • 6. A Software-Defined Radio(SDR) system is a radio Composite Message[1] communication system where components that have typically This pattern is used for marshaling/un-marshaling data, extending been implemented in hardware(e.g. mixers, filters, amplifiers, and adding messages you want to transfer while passing through modulators/demodulators, detectors. etc.) are instead implemented layers. It is also used to create a transmission protocol for each using software on a personal computer or other embedded device(Poller) in environments heterogeneous to the Half- computing devices. When a new way of service starts, it is natural Push/Half-Polling pattern. It is used in various distributed to replace existing terminals with new ones. However, the SDR middleware. performs mostly on Software instead of the existing semiconductor. Hybrid Push and Pull[12] which is one of the Pipe & Filter[7] down models SDR offers is a good example of Half-Push/Half- Polling pattern. This pattern is used when adding or filtering messages you want to transmit flexibly according to the circumstance, used internally in – Samsung Homevita the aforementioned Composite Message. It is also used to filter Homevita, a home networking system from Samsung electronics, unwanted data when building an Event Channel. adopted the upgrade methods with a mixture of push and polling method. In the Homvita 1.0 version, it took the polling method for Broker[7] upgrade in the Homevita 1.0 version. However, it had big This pattern removes direct dependency(location information, overhead by the request of many devices simultaneously. To platform restrictions, etc.) between server and client. By delegating avoid the problem, the system adopted the push upgrade method the location information of Pusher, which is in Poller, to Broker, in the Homevita 2.0 version. After that, overhead was reduced. But Poller can remove itself of its direct dependency on the Pusher. the system needed a way to monitor dead devices. In the 2.5 version, a mixture of push and polling method are adopted. It ACKNOWLEDGMENTS reduces server overhead. And the devices which are alive keep the We thank our shepherd Robert Hanmer for his valuable comments 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: – Solving the problem of heavy loads in very short periods REFERENCES of time caused by the Polling-based upgrade method [1] Aamond Sane, Roy Campbell, “Composite Messages: A and benefiting from the Push method which only Structural Pattern for Communication between upgrades specific clients. Components”, OOPSLA’95 Workshop on Design Patterns 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 server periodically. [2] F.Cristian, “Probabilistic Clock Synchronization”, 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, Possible disadvantages are: Don Roberts, “Refactoring : Improving the Design of Existing Code”, Addison-Wesley Professional, 1999 – It is not suitable for systems like vaccines that require all devices to be upgraded in case of emergency because [4] Robert S. Hanmer, “WatchDog”, Patterns for Fault Tolerant the scheduling method used takes server load into Software, WILEY, 2007 account. [5] James C. Hu, Douglas Schmidt, “JAWS: A Framework for – It is impossible to upgrade clients if a problem occurs on High-Performance Web Servers”, Domain-Specific 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 11. RELATED PATTERNS [7] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Publisher-Subscriber[7] Sommerlad, Michael Stal, “Pattern-Oriented Software Architecture Volume 1: A System of Patterns”, WILEY, Also called the Observer pattern, it is used to synchronize the 1996 information between two components-Publisher and Subscriber. Copying the database from publisher to Subscriber can be a [8] Douglas C. Schmidt, Michael Stal, Hans Rohert, and Frank typical example. It is used when the pattern encounters a non-stop Buschmann, “Pattern-Oriented Software Architecure Volum talker object, in other words, when overload occurs because of 2: Patterns for Concurrent and Networked Objects”, WILEY, non-stop Polling. 2000
  • 7. [9] R. Gusella, S. Zatti: “The Accuracy of the Clock [11] Sameer Ajmani, Barbara Liskov, Liuba Shrira, “Scheduling Synchronization Achieved by TEMPO in Berkeley UNIX 4.3 and Simulation: How to Upgrade Distributed Systems”, In BSD”, IEEE Transactions on Software Engineering, Vol.15, Proceedings of the 9th Workshop on Hot Topics in Operating July 1989 Systems(HotOS IX) [10] Timothy H. Harrison, David L. Levine, and Douglas C. [12] Jamadagni, Satish, Umesh M.N., “A PUSH download Schmidt, “The Design and Performance of a Real-time architecture for software defined radios”, 2000 IEEE CORBA Event Service”, Proceedings of OOPSLA’97, international symposium on personal wireless Atlanta, Georgia, October, 1997 communication