{"id":13769494,"url":"https://ucy-linc-lab.github.io/fogify/","last_synced_at":"2025-05-11T02:32:47.401Z","repository":{"id":94530807,"uuid":"185821522","full_name":"UCY-LINC-LAB/fogify","owner":"UCY-LINC-LAB","description":"A Fog Computing Emulation Framework","archived":false,"fork":false,"pushed_at":"2024-01-30T21:02:50.000Z","size":5543,"stargazers_count":29,"open_issues_count":12,"forks_count":9,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-11-17T05:33:02.929Z","etag":null,"topics":["edge-computing","experimentation","fog-computing","fog-topology","jupyter"],"latest_commit_sha":null,"homepage":"","language":"SCSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UCY-LINC-LAB.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-05-09T15:03:47.000Z","updated_at":"2024-11-07T14:14:34.000Z","dependencies_parsed_at":"2024-01-30T22:45:52.468Z","dependency_job_id":null,"html_url":"https://github.com/UCY-LINC-LAB/fogify","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UCY-LINC-LAB%2Ffogify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UCY-LINC-LAB%2Ffogify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UCY-LINC-LAB%2Ffogify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UCY-LINC-LAB%2Ffogify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UCY-LINC-LAB","download_url":"https://codeload.github.com/UCY-LINC-LAB/fogify/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253507149,"owners_count":21919158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["edge-computing","experimentation","fog-computing","fog-topology","jupyter"],"created_at":"2024-08-03T17:00:27.110Z","updated_at":"2025-05-11T02:32:43.566Z","avatar_url":"https://github.com/UCY-LINC-LAB.png","language":"SCSS","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# fogify\nA Fog Computing Emulator Framework\n\nFogify is an emulation Framework easing the modeling, deployment and experimentation of fog testbeds. \n Fogify provides a toolset to: model complex fog topologies comprised of heterogeneous resources, \n network capabilities and QoS criteria; deploy the modelled configuration and services using popular \n containerized infrastructure-as-code descriptions to a cloud or local environment; experiment, measure and evaluate the deployment by injecting faults and adapting the configuration at runtime to test different \n \"what-if\" scenarios that reveal the limitations of a service before introduced to the public.\n\n   ### Topology Editing\n   A typical workflow starts with the user editing the docker-compose file of an IoT application, and extend it to encapsulate Fogify's model.\n   The Fogify model is composed of: (i) \u003ci\u003eFog Templates\u003c/i\u003e, allowing the description of \u003ci\u003eServices\u003c/i\u003e, \u003ci\u003eNodes\u003c/i\u003e and \n   \u003ci\u003eNetworks\u003c/i\u003e; and (ii) the \u003ci\u003eFog Topology\u003c/i\u003e, enabling users to specify \u003ci\u003eBlueprints\u003c/i\u003e. \n   A Blueprint represents an emulated device and is a combination of a \u003ci\u003eNode\u003c/i\u003e, \u003ci\u003eService\u003c/i\u003e, \u003ci\u003eNetworks\u003c/i\u003e, \n   \u003ci\u003ereplicas\u003c/i\u003e and a \u003ci\u003elabel\u003c/i\u003e. Services are inherited from docker-compose while the \u003ci\u003ex-fogify\u003c/i\u003e \n   section provides all Fogify primitives. Thus, users still develop their application using familiar docker constructs \n   with the added functionality of Fogify not affecting portability. This means that a Fogify enhanced description will \n   run in any docker runtime environment without any alterations, however users will lose the functionality offered by Fogify. \n\n   ### Deployment\n   When the description is ready, the user deploys the application using the FogifySDK through a Jupyter notebook, \nwith the description received by the Fogify Controller.\nIf no error is detected by the Controller, it spawns the emulated devices and creates the overlay mesh networks between them, \ninstantiates the services, and broadcasts (any) network constraints to Fogify Agents. \nSpecifically, the Controller translates the model specification to underlying orchestration primitives and deploys them \nvia the Cluster Orchestrator, ensuring the instantiation of the containerized services on the emulated environment. \nLocated on every cluster node, Fogify Agents expose an API to accept requests from the Controller, apply network QoS primitives, and monitor the emulated devices.\n\n### Testing\nOn a running emulated deployment, Fogify enables developers to apply \u003ci\u003eActions\u003c/i\u003e and \"what-if\" \u003ci\u003eScenarios\u003c/i\u003e \n(sequences of timestamped actions) on their IoT services, such as ad-hoc faults and topology changes. \nActions and Scenarios are written by following the Fogify \u003ci\u003eRuntime Evaluation Model\u003c/i\u003e. \nWhen an action or a scenario is submitted, the Fogify Controller coordinates its execution with the Cluster Orchestrator\n and the respective Fogify Agents. \nFurthermore, Fogify captures performance and app-level metrics via the Fogify Agent monitoring module.\nAll metrics are stored at the Agent's local storage and can be retrieved from the FogifySDK. \n\n### Analysis\n\nTo create an end-to-end interactive analytic tool for emulated deployments, we exploit the FogifySDK capabilities in Jupyter Notebook stack.\nSpecifically, we pre-installed the FogifySDK library on Jupyter thus the user can (un-) deploy a Fog Topology, apply ad-hoc changes and scenarios, \nand, especially, retrieve runtime performance metrics. For the latter, FogifySDK stores metrics to an in-memory data structure, namely panda's dataframe, \nproviding exploratory analysis methods that produce plots and summary statistics. Except of out-of-the-box plots, provided by Pandas, \nwe extended FogifySDK with tailored functions that provide a set of plots illustrating and explaining the effects of actions and scenarios in application performance. \nWith the wide range of analytic methods provided by FogifySDK, users extract useful insights about QoS, cost, and predictive analytics. \nFinally, users may integrate other libraries, like scikit-learn, to endrose their analysis with ML and AI models. \n\n\n## Resources\n\n### Documentation\nYou will find the full documentation of the Fogify at the [documentation page](https://ucy-linc-lab.github.io/fogify/).\nAt Fogify's documentation, we provide details about installation, modeling, experimentation, and, generally, a full get-started guide about the project. \n\n### The Team\nThe creators of the Fogify are members of the [Laboratory for Internet Computing (LInC), University of Cyprus](http://linc.ucy.ac.cy/).\nYou can find more information about our research activity visit our publications' [page](http://linc.ucy.ac.cy/index.php?id=12) and our [on-going projects](http://linc.ucy.ac.cy/index.php?id=13).\n\n\n### Publications\n\nFor more details about Fogify and our scientific contributions, you can read the papers of [Fogify](http://linc.ucy.ac.cy/index.php?id=12) \nand a published [Demo](http://linc.ucy.ac.cy/index.php?id=12).\nIf you would like to use Fogify for your research, you should include at least on of the following BibTeX entries. \n\nFogify's paper BibTeX citation:\n```\n@inproceedings{Symeonides2020,\nauthor    = {Moysis, Symeonides and Zacharias, Georgiou and Demetris, Trihinas and George, Pallis and Marios D., Dikaiakos},\ntitle     = {Fogify: A Fog Computing Emulation Framework},\nyear      = {2020},\npublisher = {Association for Computing Machinery},\naddress   = {New York, NY, USA},\nbooktitle = {Proceedings of the 5th ACM/IEEE Symposium on Edge Computing},\nlocation  = {San Jose, CA, USA},\nseries    = {SEC ’20}\n}\n```\n\nFogify's demo BibTeX citation:\n```\n@inproceedings{Symeonides2020,\nauthor    = {Moysis, Symeonides and Zacharias, Georgiou and Demetris, Trihinas and George, Pallis and Marios D., Dikaiakos},\ntitle     = {Demo: Emulating Geo-Distributed Fog Services},\nyear      = {2020},\npublisher = {Association for Computing Machinery},\naddress   = {New York, NY, USA},\nbooktitle = {Proceedings of the 5th ACM/IEEE Symposium on Edge Computing},\nlocation  = {San Jose, CA, USA},\nseries    = {SEC ’20}\n} \n```\n\n\n### Acknowledgements\nThis work is partially supported by the EU Commission through [RAINBOW](https://rainbow-h2020.eu/)  871403 (ICT-15-2019-2020) project \nand by the Cyprus Research and Innovation Foundation through COMPLEMENTARY/0916/0916/0171 project.\n\n### License\nThe framework is open-sourced under the Apache 2.0 License base. The codebase of the framework is maintained by the authors for academic research and is therefore provided \"as is\".\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/ucy-linc-lab.github.io%2Ffogify%2F","html_url":"https://awesome.ecosyste.ms/projects/ucy-linc-lab.github.io%2Ffogify%2F","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/ucy-linc-lab.github.io%2Ffogify%2F/lists"}