IT/모바일 웹

[IT/Web] 웹의 진화: 과거부터 미래까지, 웹 프로그래밍 기술의 변화와 전망 알아보기 (2/2)

59date 2024. 9. 28. 18:24

이번 포스팅에서는 지난 포스팅에 이어서 웹의 진화에 대하여 알아보는 포스팅을 작성해 보겠습니다.

 

지난 포스팅은 여기를 참고해 주세요.

 

 

모바일 시대의 웹 프로그래밍

스마트폰이 우리 일상의 중심이 된 지 오래입니다. 이제 우리는 언제 어디서나 손 안의 작은 기기로 세상과 소통하고, 정보를 얻으며, 다양한 서비스를 이용합니다. 이런 변화는 웹 프로그래밍 분야에도 큰 영향을 미쳤는데요. 오늘은 모바일 시대에 웹 프로그래밍이 어떻게 변화했는지, 그리고 어떤 도전과 기회가 있는지 살펴보겠습니다.

 

1. 모바일 앱 개발 유형 비교

모바일 앱 개발은 크게 세 가지로 나눌 수 있습니다. 

네이티브 앱, 웹 앱, 그리고 하이브리드 앱입니다. 각각의 특징을 자세히 알아보도록 하겠습니다.

 

 

네이티브 앱:

네이티브 앱은 우리가 아이폰이나 안드로이드 폰에서 보통 사용하는 앱들이에요. 이 앱들은 각 스마트폰에 딱 맞게 만들어져서 아주 빠르고 부드럽게 작동합니다.

 

장점:

  1. 뛰어난 성능과 부드러운 사용자 경험: 네이티브 앱은 플랫폼의 특성을 최대한 활용하여 최적화된 성능을 제공하므로, 반응 속도가 빠르고 사용자 경험(UX)이 뛰어납니다.
  2. 기기의 모든 하드웨어 기능 활용 가능: 카메라, GPS, 가속도계, 지문 인식 등 디바이스의 하드웨어 기능을 직접적으로 호출하고 제어할 수 있어, 고도의 사용자 인터랙션이 요구되는 애플리케이션 개발에 적합합니다.
  3. 앱 스토어 배포로 사용자 접근성 높음: Google Play, Apple App Store와 같은 플랫폼의 공식 마켓을 통해 손쉽게 배포할 수 있어, 사용자에게 접근하기 쉽고 신뢰성도 높습니다.
  4. 오프라인 지원 가능: 로컬 데이터베이스와 파일 시스템에 접근할 수 있어 네트워크가 없는 오프라인 환경에서도 사용할 수 있습니다.
  5. 푸시 알림 및 백그라운드 작업 지원: 네이티브 앱은 푸시 알림을 쉽게 설정할 수 있으며, 배터리 효율적으로 백그라운드 작업을 수행할 수 있어 사용자와의 상호작용이 용이합니다.

 

단점:

  1. 플랫폼별 별도 개발 필요: iOS와 Android를 지원하려면 두 플랫폼에 대한 별도의 개발 작업이 필요해 시간과 비용이 많이 소요됩니다.
  2. 높은 유지보수 비용: 플랫폼별로 코드베이스가 다르기 때문에, 기능 수정 및 업데이트 시 두 코드베이스를 모두 유지 관리해야 합니다.
  3. 앱 스토어 심사 과정 필요: 업데이트나 새로운 기능을 추가할 때마다 앱 스토어의 심사를 거쳐야 하므로, 배포 및 업데이트 과정에서 지연이 발생할 수 있습니다.
  4. 다양한 기기 및 OS 버전 지원 어려움: 네이티브 앱은 다양한 기기와 OS 버전에 맞춰 호환성을 유지해야 하므로, 테스트와 유지보수가 까다롭습니다.

 

예시: 인기 있는 게임 앱인 “모바일 배틀그라운드”는 네이티브 앱으로 개발되어, 뛰어난 그래픽과 성능을 제공합니다.

 

 

웹 앱(Web App)

웹 앱은 스마트폰에 따로 설치하지 않고, 크롬이나 사파리 같은 인터넷 브라우저로 접속해서 사용하는 앱입니다.

 

 

장점:

  1. 하나의 코드로 모든 플랫폼에서 실행 가능: 웹 앱은 HTML, CSS, JavaScript로 작성되어, 하나의 코드베이스로 다양한 기기와 운영체제에서 동작할 수 있습니다.
  2. 개발 및 유지보수 비용 절감: 플랫폼에 구애받지 않기 때문에 하나의 코드베이스로 유지보수가 가능하여 개발 및 유지보수 비용이 절감됩니다.
  3. 즉시 업데이트 가능: 앱 스토어 심사 없이, 서버에서 직접 업데이트를 배포할 수 있으므로 사용자는 항상 최신 버전의 애플리케이션을 사용할 수 있습니다.
  4. 접근성 용이: 앱 설치 없이 URL로 접속하여 사용할 수 있어 접근성이 높습니다. 이로 인해 사용자 확보가 용이하고, 진입장벽이 낮습니다.

 

단점:

  1. 네이티브 앱에 비해 성능이 떨어질 수 있음: 웹 브라우저를 통해 실행되므로 네이티브 앱에 비해 성능이 다소 떨어질 수 있습니다. 그래픽 집약적인 게임이나 복잡한 애니메이션 구현이 어려울 수 있습니다.
  2. 기기의 하드웨어 기능 접근 제한적: 네이티브 앱처럼 기기의 카메라, 마이크, GPS 등의 하드웨어를 자유롭게 활용할 수 없고, 제한된 API만 사용할 수 있습니다.
  3. 오프라인 사용이 어려울 수 있음: 브라우저 기반이므로 인터넷 연결이 없으면 사용할 수 없는 경우가 많습니다. 일부 PWA(Progressive Web Apps) 기술을 통해 오프라인 지원이 가능하지만, 네이티브 앱만큼 완전한 오프라인 경험을 제공하기는 어렵습니다.

 

예시: 구글 문서(Google Docs)는 웹 앱의 좋은 예로, 사용자가 인터넷만 있으면 어느 기기에서든 문서를 작성하고 편집할 수 있습니다.

 

 

하이브리드 앱 (Hybrid App)

하이브리드 앱은 네이티브 앱과 웹 앱의 좋은 점을 모두 가져온 앱입니다. 웹 기술로 만들지만, 일반 앱처럼 앱 스토어에서 내려받아 설치할 수 있습니다.

 

 

장점:

  1. 웹 기술과 네이티브 기능의 장점 결합: 웹 기술을 사용하여 여러 플랫폼에서 작동할 수 있지만, 네이티브 기능도 활용할 수 있어 기기의 하드웨어 기능을 제어할 수 있습니다.
  2. 크로스 플랫폼 개발로 비용 절감: 하나의 코드베이스를 사용하여 iOS와 Android 등 여러 플랫폼에 배포할 수 있으므로 개발 및 유지보수 비용이 절감됩니다.
  3. 앱 스토어 배포 가능: 네이티브 셸 안에 웹 앱을 삽입하여 앱 스토어에 배포할 수 있어 사용자에게 설치형 앱처럼 제공할 수 있습니다.
  4. 빠른 개발 속도: 하나의 코드를 통해 여러 플랫폼에서 구동할 수 있으므로 개발 속도가 빠르고, 유지보수도 용이합니다.

 

단점:

  1. 순수 네이티브 앱보다는 성능이 떨어질 수 있음: 하이브리드 앱은 네이티브 셸 안에 웹 콘텐츠를 로드하는 방식이기 때문에, 고성능을 요구하는 애플리케이션에서는 순수 네이티브 앱만큼의 성능을 내기 어렵습니다.
  2. 복잡한 기능 구현 시 개발이 까다로울 수 있음: 네이티브와 웹 간의 상호작용을 고려해야 하기 때문에, 복잡한 사용자 인터페이스나 하드웨어 접근을 요구하는 기능 구현 시 개발이 어려울 수 있습니다.
  3. 플랫폼 간 일관성 문제: 하나의 코드베이스로 여러 플랫폼을 지원하다 보면, 플랫폼 별 UI/UX나 네이티브 기능의 미세한 차이로 인해 사용자 경험의 일관성이 떨어질 수 있습니다.

 

예시: “Instagram”은 하이브리드 앱으로, 사진 공유 기능은 네이티브의 장점을 활용하면서도 웹 기반의 소셜 기능을 포함하고 있습니다.

 

 

 

2. 성능 최적화의 중요성

많은 사람들이 스마트폰으로 웹사이트를 볼 때 느리게 로딩되거나 버벅거린 경험이 있을 것입니다. 이런 문제를 해결하기 위해 개발자들이 하는 노력을 '성능 최적화'라고 합니다. 그렇다면 이걸 왜 할까요? 빠르고 부드러운 웹사이트는 사용자들이 더 오래 머물고 자주 찾게 만들기 때문입니다. 그럼 어떻게 하면 되는지 알아보겠습니다.

 

  1. 이미지 다이어트
    • 큰 이미지 파일은 웹사이트를 느리게 만듭니다. 따라서 이미지 크기를 줄이고 압축하여 최적화해야 합니다. 화면 크기에 맞는 이미지를 제공하는 것도 중요한데, 작은 화면에 큰 이미지를 로드하는 것은 불필요한 리소스 낭비입니다.
  2. 필요할 때만 불러오기
    • 모든 콘텐츠를 한 번에 로드하지 않고, 필요한 부분만 그때그때 불러오는 방식을 사용합니다. 예를 들어, 긴 웹페이지에서 사용자가 스크롤을 내릴 때만 아래쪽 이미지를 로드하여 초기 로드 시간을 단축할 수 있습니다.
  3. 서버에서 미리 준비하기
    • 서버에서 웹페이지를 미리 생성하고 이를 클라이언트에 전달하면 스마트폰이나 컴퓨터에서 렌더링 하는 작업이 줄어들어 성능이 향상됩니다. 서버에서 준비된 페이지를 제공함으로써 초기 로딩 속도가 크게 개선됩니다.
  4. 스마트한 저장 및 캐싱
    • 한 번 로드한 콘텐츠는 기기에 저장해 두고 재사용합니다. 이렇게 하면 매번 서버로부터 새로 불러올 필요가 없고, 사용자가 동일한 페이지를 다시 방문할 때 더 빠르게 콘텐츠를 볼 수 있습니다. 또한, CDN(콘텐츠 전송 네트워크)을 활용하여 가까운 서버에서 콘텐츠를 제공함으로써 지연 시간을 줄일 수 있습니다.
  5. 파일 압축 및 번들링
    • 웹사이트를 구성하는 JavaScript, CSS 등의 파일은 압축하고, 여러 개의 작은 파일은 하나로 합쳐 로드 요청 수를 줄이는 것이 좋습니다. 이를 통해 네트워크 요청이 최적화되어 페이지 로딩 속도가 빨라집니다. 글꼴 최적화
  6. 글꼴 최적화
    • 글꼴 파일이 크면 웹사이트 로딩 속도에 영향을 줄 수 있습니다. 따라서 사용하지 않는 글꼴 스타일을 제거하거나, 경량화된 폰트 파일을 사용하여 성능을 개선합니다. woff2 형식의 폰트를 사용하는 것도 좋은 방법입니다.

 

이러한 최적화 작업을 통해 스마트폰으로 웹사이트를 볼 때 훨씬 더 빠르고 부드럽게 사용할 수 있는 것입니다.

 

 

3. 프로그레시브 웹 앱(PWA)의 등장

프로그레시브 웹 앱(PWA)이란?

프로그레시브 웹 앱, 줄여서 PWA는 웹 기술로 만들어졌지만 일반 앱처럼 동작하는 특별한 웹사이트입니다. 평범한 웹사이트와 달리 PWA는 여러분의 스마트폰 홈 화면에 설치할 수 있고, 인터넷이 끊겨도 사용할 수 있는 등 일반 앱과 비슷한 기능을 가지고 있습니다. 그럼 PWA의 주요 특징과 장점에 대해 자세히 알아보겠습니다.

 

 

PWA의 주요 특징

  1. 설치와 실행이 정말 쉽습니다 PWA는 일반 웹사이트처럼 주소를 입력해 접속할 수 있습니다. 그리고 앱 스토어에 가지 않고도 브라우저에서 "홈 화면에 추가" 버튼만 누르면 바로 설치할 수 있습니다. 이렇게 설치한 PWA는 여러분의 스마트폰 홈 화면에 아이콘으로 나타나고, 터치 한 번으로 실행할 수 있습니다.
  2. 인터넷이 없어도 작동합니다 PWA는 Service Worker라는 특별한 기술을 사용해 인터넷이 없는 환경에서도 동작할 수 있습니다. 이 기술은 여러분이 웹사이트를 방문할 때 정보를 저장해 두고, 나중에 인터넷이 없어도 이전에 봤던 페이지를 보여줄 수 있습니다. 예를 들어, 비행기를 타고 있을 때도 PWA로 만든 뉴스 앱에서 이전에 읽었던 기사를 볼 수 있습니다.
  3. 알림을 보내줍니다 PWA는 일반 앱처럼 알림을 보낼 수 있습니다. 새로운 소식이 올라왔거나, 할인 정보가 있을 때 실시간으로 알려줄 수 있습니다. 웹사이트를 열지 않아도 앱처럼 알림을 받을 수 있어서, 사용자와 더 자주 소통할 수 있습니다.
  4. 자동으로 업데이트됩니다 PWA는 브라우저에서 실행되기 때문에 사용자가 따로 업데이트할 필요가 없습니다. 웹사이트가 새로워지면 PWA도 자동으로 최신 버전으로 바뀝니다. 앱 스토어에 가서 업데이트를 누르고 기다릴 필요가 없어 편리합니다.
  5. 모든 기기에서 잘 작동합니다 PWA는 아이폰, 안드로이드폰, 윈도우 컴퓨터 등 어떤 기기에서든 같은 코드로 실행됩니다. 개발자들이 각 기기에 맞춰 따로 만들 필요 없이, 한 번만 만들어도 여러 환경에서 사용할 수 있습니다. 이렇게 하면 앱을 만들고 관리하는 데 드는 비용과 시간을 줄일 수 있습니다.
  6. 빠르게 로딩됩니다 Service Worker와 캐싱이라는 기술 덕분에 PWA는 일반 웹사이트보다 훨씬 빠르게 로딩됩니다. 한 번 방문한 후에는 저장된 데이터를 사용해 다음에 방문할 때 더 빠르게 내용을 불러올 수 있습니다. 이런 빠른 속도는 사용자들이 더 편리하게 느끼고 만족도를 높이는 데 도움이 됩니다.

 

PWA의 장점과 실용성

  • 앱 스토어 의존도가 낮습니다: PWA는 앱 스토어 없이도 웹을 통해 쉽게 설치하고 배포할 수 있습니다. 앱 스토어에 등록하고 심사받는 과정 없이 바로 사용자에게 앱을 제공할 수 있어 개발자들의 부담을 줄여줍니다. 또한 앱 스토어의 규칙이 바뀌어도 영향을 받지 않아 더 자유롭게 앱을 관리할 수 있습니다.
  • 다양한 화면에 맞춰 디자인할 수 있습니다: PWA는 컴퓨터, 태블릿, 스마트폰 등 어떤 화면 크기에서도 잘 보이도록 만들 수 있습니다. CSS라는 기술을 사용해 화면 크기에 따라 최적화된 모습으로 보여줄 수 있습니다.
  • 보안이 강화되어 있습니다: PWA는 HTTPS라는 안전한 방식으로 데이터를 주고받아 정보가 안전하게 보호됩니다. 또한 Service Worker라는 기술도 안전한 곳에서만 실행되도록 만들어져 PWA의 보안을 더욱 강화합니다.
  • 사용자들이 더 자주 찾게 됩니다: PWA의 알림 기능을 통해 사용자들이 더 자주 앱을 찾게 만들 수 있습니다. 새로운 내용이나 이벤트 소식을 실시간으로 알려주어, 웹사이트를 더 자주 방문하게 하고 사용자와의 소통을 활발하게 만들 수 있습니다.

 

프로그레시브 웹 앱은 웹의 장점을 최대한 살리면서도 일반 앱처럼 좋은 경험을 제공하는 강력한 웹 애플리케이션입니다. PWA는 설치가 쉽고, 빠르게 로딩되며, 인터넷이 없어도 작동하고, 알림도 보낼 수 있어 사용자들과 더 많이 소통할 수 있습니다.

 

4. 새로운 웹 기술의 활용

모바일 환경에서는 성능, 사용성, 디자인 모두가 중요합니다. 이를 충족하기 위해 웹 기술도 계속 발전하고 있습니다. 최신 웹 기술을 활용하면 고성능, 유연한 디자인, 사용자 친화적인 웹 애플리케이션을 만들 수 있습니다. 이제 이러한 새로운 웹 기술 중 몇 가지를 소개하면서, 이들이 웹 개발에 어떻게 도움을 줄 수 있는지 설명해 드리겠습니다.

 

1. WebAssembly

웹 애플리케이션의 성능은 항상 고민거리입니다. 자바스크립트만으로는 복잡한 연산이나 그래픽 처리에서 한계가 있기 때문입니다. 이때 WebAssembly가 해결책이 될 수 있습니다.

 

WebAssembly(Wasm)는 C, C++, Rust와 같은 고성능 언어로 작성된 코드를 웹 브라우저에서 실행할 수 있게 해주는 기술입니다. WebAssembly를 사용하면 브라우저에서 일반적인 자바스크립트보다 훨씬 빠르게 계산을 수행할 수 있습니다. 예를 들어, 이미지 편집 소프트웨어나 게임 같은 고성능 애플리케이션을 웹에서 구현할 때 유용합니다.

 

WebAssembly는 다음과 같은 상황에서 활용할 수 있습니다:

  • 이미지나 영상 처리를 웹에서 실시간으로 빠르게 실행하고 싶을 때
  • 물리 엔진을 사용하는 3D 게임이나 애니메이션을 웹에서 구동할 때
  • 데이터 분석 애플리케이션처럼 복잡한 연산을 빠르게 수행하고 싶을 때

WebAssembly는 네이티브 애플리케이션처럼 빠르게 실행되면서도 웹의 유연성을 가져다주므로, 앞으로 더 많은 웹 애플리케이션에서 사용될 가능성이 높습니다.

 

2. Web Components

웹 개발에서는 동일한 UI 요소를 여러 곳에서 반복적으로 사용하는 경우가 많습니다. 이런 경우, Web Components를 사용하면 재사용 가능한 컴포넌트를 만들어 코드 중복을 줄이고 유지보수를 쉽게 할 수 있습니다.

 

Web Components는 HTML, CSS, 자바스크립트를 결합한 독립적인 UI 요소를 만들 수 있는 기술입니다. 예를 들어, My-Button이라는 커스텀 버튼 컴포넌트를 만들었다면, 다른 프로젝트나 페이지에서도 간단히 <my-button> 태그만 추가해 같은 버튼을 사용할 수 있습니다.

 

Web Components는 다음과 같은 방식으로 활용할 수 있습니다:

  • 버튼, 모달 창, 카드 레이아웃 등 반복적으로 사용하는 UI 요소를 컴포넌트로 만들어 코드의 일관성 유지
  • 컴포넌트를 라이브러리로 패키징해 다른 개발자가 쉽게 사용할 수 있게 제공
  • 다양한 프로젝트에서 공통적으로 사용할 수 있는 UI 요소를 만들어 유지보수 시간을 줄이기

이렇게 Web Components를 사용하면 코드 중복을 줄이고, 유지보수와 확장성을 크게 높일 수 있습니다. 특히 여러 팀에서 공동으로 사용하는 UI 라이브러리를 개발할 때 효과적입니다.

 

3. CSS Grid 및 Flexbox

웹사이트의 레이아웃을 디자인할 때, Flexbox와 CSS Grid는 필수적인 도구입니다. 이 두 가지 레이아웃 시스템은 복잡한 UI 디자인을 쉽게 만들고 관리할 수 있게 도와줍니다.

 

Flexbox는 단일 행 또는 열의 레이아웃을 쉽게 만들고, 아이템 간의 정렬을 손쉽게 조절할 수 있습니다. justify-content, align-items 등의 속성을 이용해 요소를 수평/수직 정렬하고 간격을 조절할 수 있습니다.

 

CSS Grid는 2차원 레이아웃을 처리하는 데 탁월한 도구입니다. 행(row)과 열(column)을 기준으로 요소를 배치할 수 있어, 대시보드처럼 복잡한 레이아웃을 구현할 때 아주 유용합니다.

 

이 두 기술은 다음과 같은 방식으로 활용할 수 있습니다:

  • 반응형 웹 디자인을 구현할 때, 화면 크기에 맞춰 레이아웃을 유연하게 변경
  • Flexbox로 간단한 행렬 기반의 정렬을 구현하고, CSS Grid를 이용해 다단 레이아웃을 구성
  • UI 요소 간의 정렬, 간격, 크기 비율을 직관적으로 관리

CSS Grid와 Flexbox는 각각의 장점을 살려 함께 사용하면 더욱 유용합니다. 예를 들어, 전체 레이아웃을 CSS Grid로 구성하고, 내부 콘텐츠 정렬을 Flexbox로 조절하면, 원하는 모양을 쉽게 만들 수 있습니다.

 

4. Service Worker

모바일 환경에서는 네트워크가 불안정하거나 연결이 끊기는 상황이 자주 발생합니다. 이럴 때, Service Worker를 이용해 오프라인에서도 웹 애플리케이션이 동작할 수 있도록 만들어줄 수 있습니다.

 

Service Worker는 백그라운드에서 실행되는 자바스크립트 파일로, 네트워크 요청을 가로채거나, 캐싱을 관리하고, 푸시 알림을 처리할 수 있습니다. 이를 통해 PWA처럼 오프라인에서도 사용자에게 콘텐츠를 보여줄 수 있습니다.


Service Worker는 다음과 같은 방식으로 활용할 수 있습니다:

  • 네트워크가 끊긴 상황에서도 마지막에 본 페이지를 캐시로 보여주기
  • 오프라인 상태에서도 기본적인 기능(게시물 작성, 데이터 입력 등)을 사용할 수 있도록 구성
  • 푸시 알림을 통해 사용자에게 실시간 업데이트 제공

Service Worker는 사용자 경험을 끊김 없이 유지해 주는 중요한 기술로, 오프라인 사용을 고려한 웹 애플리케이션 개발 시 꼭 알아야 할 기술 중 하나입니다.

 

5. HTTP/2와 HTTP/3

웹페이지가 빠르게 로드되려면 단순히 코드나 이미지 최적화뿐만 아니라, 네트워크 프로토콜도 중요한 역할을 합니다. HTTP/2와 HTTP/3는 기존의 HTTP/1.1보다 훨씬 빠른 속도를 제공하는 프로토콜입니다.

 

HTTP/2는 다중 요청과 응답을 동시에 처리할 수 있는 멀티플렉싱 기능을 제공해, 페이지 로딩 속도를 높여줍니다. 또한 서버 푸시 기능을 통해 클라이언트가 요청하지 않은 리소스도 미리 전송할 수 있습니다.

 

HTTP/3는 더 나아가 QUIC 프로토콜을 기반으로 개발되어, 네트워크 연결을 더 빠르고 안정적으로 유지합니다. 지연 시간(latency)을 줄이고, 데이터 손실 시 빠르게 복구할 수 있어 모바일 환경에서도 더 나은 성능을 제공합니다.

 

이렇게 HTTP/2와 HTTP/3를 적용하면 네트워크 성능이 향상되어, 웹사이트 로딩 속도가 빨라지고 사용자 경험도 크게 개선될 수 있습니다.

 

 

 

 

이처럼 최신 웹 기술들은 모바일 환경에서도 더 나은 사용자 경험을 제공하는 데 큰 도움이 됩니다. WebAssembly로 고성능 애플리케이션을 구현하고, Web Components로 재사용 가능한 UI를 만들며, CSS Grid와 Flexbox로 복잡한 레이아웃을 구성하는 등, 각 기술의 장점을 잘 활용해 최적화된 웹 애플리케이션을 구축할 수 있습니다.

 

 


 

 

잘못된 내용 혹은 오타가 있거나 더 좋은 내용 피드백은 언제나 환영입니다 :)