Skip to content

Latest commit

 

History

History
62 lines (41 loc) · 3.9 KB

점진적향상_우아한하향.md

File metadata and controls

62 lines (41 loc) · 3.9 KB

점진적 향상, 우아한 하향

2가지 개발접근법이 있다. 우아한 하향과 점진적인 향상.
간단히 정리하자면 다음과 같이 정의할 수 있다.

우아한 하향(Graceful degradation)

Graceful Degradation, 이 자체는 사실 단어만 보면 크게 와닿지 않는다. 이는 기능을 제대로 구현하면서, 기술적인 이유나 Device의 호환성 여부에 의해 해당 기능을 제공받지 못하는 사용자에게 다른 버전의 대체 기능을 제공한다. 혹은, 단순히 맥 OS에서는 해당 기능을 제공할 수 없기 때문에 Windows 컴퓨터를 이용해주세요.와 같은 문구를 제공한다.

정리하면 다음과 같다.

  • 원하는 기능을 갖는 또다른 버전을 제공하거나, 사용자가 제품의 결점이 사용성을 보장하기 위한 안전 조치때문이라는 것을 인지하도록 만드는 것.
  • 최신 기술 기반 또는 기기에서 동작하는 기능을 만들고 나서 오래된 기술 기반 혹은 기기에서도 유사한 성능으로 동작하도록 조치하는 것.
  • 사용자들의 기기를 위해 별도의 버전을 만들어 놓는 것.

Graceful Degradation이 유용한 경우가 있다.

  • 오랜된 제품을 새로 개발하기엔 시간이 부족하고 방법과 영향도를 파악할 수 없는 경우.
  • 일반적으로 Graceful Degradation을 통해 개발이 진행되면 성능이 더 좋을 확률이 높기 때문에 수행 속도에 민감한 애플리케이션의 경우.(ex, rAF vs jQuery .animate)

점진적 향상(Progressive enhancement)

Progressive EnhancementGraceful Degradation과 반대로 생각하면 된다. 웹의 관점에서 봤을 때 이에는 몇 가지 원칙이 있는데 다음과 같다.

  • 컨텐츠가 모든 브라우저에서 표현.
  • 기능이 모든 브라우저에서 사용.
  • Semantic Markup으로 표시.(HTML5)
  • 레이아웃의 향상은 CSS로 처리.
  • 동작의 향상은 unobtrusive javascript로 처리.
  • 사용자가 브라우저 설정을 원하는대로 변경해도 기능이 잘 동작함.

unobtrusive javascript란 필수적인 기능들을 HTML만으로 최대한 처리하고 그 위에 JS를 이용해 기능을 추가한다는 의미.

몇 가지 특징을 정리해보면 다음과 같다.

  • 사용가능한 기능을 바탕으로, 향상된 기능을 적용하기 전에 테스트를 통해 풍부한 사용자 경험을 하나씩 증가시키는 것이다.
  • 많은 테스트를 통해 말그대로 기능을 점진적으로 향상시키는 것.
  • 기초부터 차곡차곡 쌓아서 발전해 나가는 방법

해당 개발접근법을 적용한 대표적인 예로 jQuery가 있다. HTML의 기능을 충분히 활용하도록 설계되었기 때문에 다른 JS의 사용을 최소화할 수 있다고 설명하고 있다.

결국, jQuery도 JS기 떄문에 살짝 모순적인 얘기일 수 있다. 하지만, jQuery가 크로스 브라우징을 해결할 수 있는 대표적인 방법 중 하나라는 것은 이를 방증한다고 볼 수 있을 것 같다.

보통 우리는 Graceful Degradation을 많이 봐왔을 것이다. 브라우저가 다양화되고 기술의 지원 여부가 브라우저에 따라 상이하기 때문이다. 하지만, 어떻게 보면 Progressive Enhancement접근법을 통해 개발된 애플리케이션의 경우, 사용자가 인지할 수 없기 때문에 전자가 더 많다고 보기도 어려울 수 있다.



Reference