DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
View Events Video Library
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Integrating PostgreSQL Databases with ANF: Join this workshop to learn how to create a PostgreSQL server using Instaclustr’s managed service

Mobile Database Essentials: Assess data needs, storage requirements, and more when leveraging databases for cloud and edge applications.

Monitoring and Observability for LLMs: Datadog and Google Cloud discuss how to achieve optimal AI model performance.

Automated Testing: The latest on architecture, TDD, and the benefits of AI and low-code tools.

Related

  • Architecting a Completely Private VPC Network and Automating the Deployment
  • Building Analytics Architectures to Power Real-Time Applications
  • Single-Tenant vs. Multi-Tenant Architecture: Breaking Down the Key Differences
  • Janus vs. MediaSoup: The Ultimate Guide To Choosing Your WebRTC Server

Trending

  • The Convergence of Testing and Observability
  • CI/CD Tools and Technologies: Unlock the Power of DevOps
  • Setting up Request Rate Limiting With NGINX Ingress
  • Log Analysis: How to Digest 15 Billion Logs Per Day and Keep Big Queries Within 1 Second
  1. DZone
  2. Coding
  3. Frameworks
  4. The Swift to WebDAV Proxy Architecture

The Swift to WebDAV Proxy Architecture

What we learned architecturally creating the proxy.

Matt Farina user avatar by
Matt Farina
·
Sep. 08, 15 · Tutorial
Like (1)
Save
Tweet
Share
2.21K Views

Join the DZone community and get the full member experience.

Join For Free

when we (really dr. butcher ) crafted the swift to webdav proxy , the architecture mattered. the first two attempts at building the proxy raised issues technology and architecture issues that needed to be worked out. for example, our second attempt worked well as long as the files weren't large. but as object storage users know, there are times you want to work with large files.


swift to webdav proxy architecture


authentication


webdav needs to authenticate with a username and password for this to work. the alternative form of authentication, digest authentication , requires access to an md5 version of the password which we don't have.


when the webdav client tries to authenticate against the webdav endpoint it will pass in a username and password. for the proxy to communicate with swift it will need a token. to avoid communicating with keystone for each request, the token and some other information is stored in memcached.


if the token expires or becomes invalid the proxy service will ask the webdav client to re-authenticate.


projects (tenants)


webdav is able to provide a username and password. openstack scopes assets to projects, formerly called tenants. to handle passing all 3 pieces of information to swift the project id is collected in the url. for example,


https://webdav-endpoint.region.example.com/1234/


individual proxy instances are configured to work with a specific region. a proxy setup will be needed for each supported region. this allows the setup to scale from a single region to numerous geo-located ones without issue.


passing data


the proxy service is a translating proxy. for example, when the webdav client requests a list of the contents within a directory the proxy service translates that to the correct swift call. the response from swift is converted into the appropriate format for the webdav client.


when data is passed, specifically files, the proxy service passes the content through the proxy to the other side. that means that fetching a file, even a large file, happens almost immediate. files are not stored on the proxy so it doesn't need to have a large cache. instead they simply pass through changing formats as needed.


in practice


this setup has let me transfer large files, in the gigabyte range, without issue. i've been able to use it on mac, linux, windows, tablets, and even my phone.

WebDAV Swift (programming language) Architecture

Published at DZone with permission of Matt Farina, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Architecting a Completely Private VPC Network and Automating the Deployment
  • Building Analytics Architectures to Power Real-Time Applications
  • Single-Tenant vs. Multi-Tenant Architecture: Breaking Down the Key Differences
  • Janus vs. MediaSoup: The Ultimate Guide To Choosing Your WebRTC Server

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends: