데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      〈Gen.View | FE - #1〉 굳이 Svelte 를 선택한 이유

      김우영 24.10.07
      2,393 5 1
      DEVOTEE 요약
      본 블로그는 최신 웹 개발 트렌드와 툴을 다루며, Svelte를 선택한 이유를 설명합니다. Svelte는 간결하고 직관적인 코딩 스타일이 매력적이며, 컴파일러 기반으로 작은 번들 크기와 효율적인 런타임 성능을 제공합니다. 비록 커뮤니티 성숙도가 낮고 채용 시장에서의 인기가 적지만, Svelte는 초보자에게 친화적인 장점이 있어 부가적으로 프론트엔드 역량을 키우고자 하는 사람에게 적합합니다.

      <Gen.View | FE - #1> 굳이 Svelte 를 선택한 이유

      AI Data ML서비스개발팀

      김우영 (ddsksw01@sktelecom.com)

      [Gen.View | FE] 시리즈에서 다룰 (다룬) 기술 Stack
      
      * Web
          * Svelte (w/ Sveltekit)
          * Tailwindcss (w/ DaisyUI)
      * App
          * Flutter
      * Etc
          * AWS, Netlify
          * Docker, Docker-compose
          * GitAction & Pulumi (IaC)
      <Gen.View | FE> 시리즈 - 지난 게시글


      왜 하필 Svelte 인가요? 아직 시기상조 아닐까요?

      쉽고, 빠르고, 직관적인 Web Framework

      트렌드

      Javascript 가 Web 표준 개발 언어기 때문에, 자연스럽게 해당 언어에 기반한 Web Framework (혹은 Library) 는 짧은 시간 내 굉장히 많이 생기고, 동시에 많이 사라지고 있는 것 같습니다.

      Web Framework 를 선택하는 것이 더욱 어려운 이유는, Frontend 분야의 트렌드가 다른 개발 분야에 비해 비교적 빠르게 변화하고 있기 때문입니다.

      실제로, 지난 10년 사이에 크고 작은 지각 변동이 수차례 있었던 것 같습니다.

      2010년대 초반에는 jQuery, 2010년대 중반에는 Angular, 2010년대 후반 이후에는 React 와 Vue 가 Web Framework 핵심 트렌드였던 것 같습니다.


      개인적으로는 대부분의 기간을 Frontend 분야와 친숙하게 지내지 않았기 때문에, 위와 같이 빠르게 변하는 Frontend 업계 트렌드를 그저 '옆동네 불구경' 정도로 생각했던 것 같습니다.

      막상 Web 개발 공부를 시작하려다 보니 꽤나 많은 선택지 앞에서 당황했고, 실제로 공부하고자 하는 Web Framework 를 선택하는 과정에서 많은 고민을 하게 되었습니다.

      안정적인 선택지 (React, Vue)

      현재 시점에서 Javascript 기반의 Web Framework 를 선택할 때, 가장 안정적인 옵션은 의심의 여지없이 React 혹은 Vue 입니다.

      Frontend 분야에서 이미 전세계에서 큰 비중으로 활용되고 있기에, 개발 안정성이나 확장 가능성은 보장되었다고 해도 무방합니다.

      실제로, Frontend 분야의 채용 시장도 모두 React, Vue 중심으로 열려 있고, 온라인과 오프라인 구분할 것 없이 대부분의 학습 자료는 해당 Web Framework 위주로 구성되어 있습니다.


      또한, 현실적으로 개발자들에게 굉장히 중요한 요소로 작용하는 커뮤니티 성숙도 측면에서 압도적인 모습을 보이고 있습니다.

      직면한 문제가 무엇이든, 대부분 Google 혹은 Youtube 에 이미 해당 문제를 경험하고 해결한 사례가 존재하기 때문에

      React, Vue 에 익숙하지 않은 개발자더라도 풍부한 Reference 를 통해 어렵지 않게 궁금증을 해결할 수 있습니다.

      심지어, ChatGPT 도 다른 Web Framework 와 관련된 질문보다는 React, Vue 와 관련된 질문에 보다 명쾌한 해결책을 제시하는 경우가 많습니다.

      도전적인 선택지 (Svelte)

      처음 Svelte 를 접하게 된 계기는 '노마드 코더' 라는 유튜버의 Svelte 소개 영상이었습니다.

      Frontend 분야에 대한 기본 지식이 부족했기에, Svelte 를 추천하는 다양한 이론적인 (Virtual DOM 을 사용하지 않는다든가, 경량화 되었다든가, 실질적인 의미의 Reactive 특성이 구현된 형태다든가 하는) 강점보다는,

      초심자 입장에서 가시적으로 느낄 수 있을 정도의 간결한 Code 형태가 굉장히 매력적으로 다가왔습니다.

      (Svelte 는 Framework 보다는 Compiler 로 분류되지만 편의상 Framework 로 지칭하겠습니다.)


      이를 계기로, Svelte 라는 Web Framework 에 관심을 가지고 다양한 자료를 찾아보기 시작했습니다.

      하단에 첨부된 이미지와 같이, 2022년 Survey 결과에 의하면 Javascript 기반 Web Framework 중 (React 와 Vue 를 제치고) 개발자들이 가장 만족한 Framework 라는 결과도 큰 강점으로 느껴졌습니다.

      또한, React 진영의 Next.js 와 같이 Full-stack 개발이 가능한 Sveltekit 의 정식 버젼 (v1.0) 이 출시된 시점이었기에 Svelte 에 대한 배움의 의지는 점차 강해졌습니다.

      (직후 게시글에서 Sveltekit 을 다룰 예정입니다.)

      image.png

      Svelte 를 선택한 이유

      현재 시점에서, Svelte 를 자신의 주력 Web Framework 로 선택하는 것은 리스크가 큰 판단입니다.

      커뮤니티 성숙도 또한 높지 않기 때문에 Svelte 를 공부하는 것이 시기상조 일 수 있다는 의견에도 크게 반박할 여지는 없어 보입니다.

      아직은 '다윗'의 위치이기에, 특히나 Frontend 분야의 개발자로 커리어를 시작하고자 하는 입장에서는 채용 관점에서 좋은 선택지가 아닌 것 같습니다.

      그럼에도 불구하고 Svelte 를 선택하고자 한다면, Svelte 의 발전 방향과 실제 기업들의 채택률을 꾸준히 지켜보며 조금은 가벼운 마음으로 공부를 시작해보는 것이 가장 현명해 보이는 시점인 것 같습니다.


      개인적으로 Svelte 는 Frontend 가 아닌 다른 분야의 (Backend 혹은 AI) 개발자 혹은 비개발 직군이 Frontend 분야의 기술 역량을 보조적인 강점으로 활용하는 입장에서 가장 적합한 Web Framework 라고 판단하고 있습니다.

      또한, 새로운 개발 언어나 Framework 를 배우는 것에 큰 두려움이 없는 성향을 가지고 있다면 더욱 흥미롭운 선택지입니다.

      해당 상황에서 동일한 기능을 갖춘 Web-application 을 React, Vue, Svelte 각각의 공식 문서를 참고하여 튜토리얼 방식으로 만들다보면, 자연스럽게 Svelte 의 매력에 빠져들 수 있습니다.

      상태 변수에 기반하여 동적인 Counter Application 화면을 만드는 아래의 예시를 통해 Svelte 의 간결하고 직관적인 Code 형태를 쉽게 확인할 수 있습니다.

      • React

      import React, { useState } from 'react';
      
      function App() {
        const [count, setCount] = useState(0);
      
        const increment = () => {
          setCount(count + 1);
        };
      
        return (
          <div>
            <h1>Counter: {count}</h1>
            <button onClick={increment}>Increment</button>
          </div>
        );
      }
      
      export default App;
      • Vue

      <template>
        <div>
          <h1>Counter: {{ count }}</h1>
          <button @click="increment">Increment</button>
        </div>
      </template>
      
      <script>
      export default {
        data() {
          return {
            count: 0
          };
        },
        methods: {
          increment() {
            this.count += 1;
          }
        }
      };
      </script>
      • Svelte

      <script>
        let count = 0;
      
        function increment() {
          count += 1;
        }
      </script>
      
      <div>
        <h1>Counter: {count}</h1>
        <button on:click={increment}>Increment</button>
      </div>

      아래의 내용은 Svelte 의 강점을 묻는 질문에 ChatGPT 가 답변한 사항입니다.

      길지는 않은 시간이었지만 개인적으로 여러가지 Web Framework 를 경험해본 결과, 특히 2~3번 강점을 깊이 체감할 수 있었습니다.

      기본적인 HTML, Javascript 문법을 숙지한 상태에서, 직관적으로 생각하고 손이 가는 대로 Code 를 작성하면 원하는 기능이 실제 Web 에서 구현되는 신기한 경험을 했습니다.

      이처럼 즐거운 초기 학습 과정을 통해 Svelte 에 대한 호감을 더욱 키웠습니다.

      Svelte 를 처음 경험하고 빠져들게 된 시기는, 아직까지도 Frontend, Backend, AI 등 모든 분야를 통틀어 새로운 개발 언어나 Framework 를 접하는 과정에서 느꼈던 가장 긍정적인 개발 경험으로 남아있습니다.

      [Svelte 강점에 대한 질문 - ChatGPT 의 답변]
      1. 컴파일러 기반의 효율성
      - 빠른 런타임 성능: Svelte는 컴파일러 기반 프레임워크로, 런타임에 프레임워크가 필요하지 않습니다. 코드를 컴파일 단계에서 최소화하고 최적화하기 때문에 React나 Vue에 비해 더 빠른 런타임 성능을 제공합니다.
      - 작은 번들 크기: 컴파일 단계에서 필요한 코드만 포함하여 번들 크기가 작습니다. React나 Vue는 런타임 라이브러리와 함께 번들링되기 때문에 상대적으로 더 큰 번들 크기를 갖게 됩니다.
      
      2. 더 간단하고 직관적인 문법
      - 간결한 코드: Svelte는 HTML, CSS, JavaScript를 자연스럽게 활용하여 컴포넌트를 작성하기 때문에 React의 JSX나 Vue의 템플릿 구문에 비해 더 간단하고 직관적입니다. 이로 인해 코드가 읽기 쉽고 작성하기도 수월합니다.
      - 간단한 상태 관리: Svelte에서는 상태 관리를 위해 복잡한 라이브러리나 패턴을 도입할 필요가 없습니다. 반응형 변수를 통해 상태를 관리할 수 있어 React의 useState, useEffect 훅이나 Vue의 reactivity 시스템을 배우지 않아도 쉽게 시작할 수 있습니다.
      
      3. 낮은 진입 장벽과 빠른 학습 곡선
      - 빠른 시작: Svelte는 설정이 간단하고 기본 문법이 쉬워서 React나 Vue에 비해 더 빠르게 프로젝트를 시작할 수 있습니다. 특히, 설정 파일이나 복잡한 구성 요소 없이도 간단한 애플리케이션을 구축할 수 있습니다.
      - 초보자 친화적: Svelte는 기존 웹 기술에 익숙한 사람들에게 친숙하며, HTML, CSS, JavaScript를 그대로 사용할 수 있기 때문에 웹 개발 초보자에게 더 쉽게 접근할 수 있습니다.
      
      4. 내장된 기능의 활용
      - 내장된 애니메이션과 전환 효과: Svelte는 기본적으로 애니메이션과 전환 효과를 지원합니다. 추가적인 라이브러리를 설치하지 않아도 간단한 애니메이션을 구현할 수 있어, 인터랙티브한 UI를 만들기가 쉽습니다.
      - 컴포넌트 스코핑된 CSS: Svelte에서는 컴포넌트 내에서 작성한 스타일이 자동으로 스코핑되어 다른 컴포넌트와 충돌하지 않습니다. 이 기능은 React나 Vue에서도 가능하지만, Svelte에서는 더 자연스럽고 간단하게 처리됩니다.
      
      5. 가상 DOM의 부재로 인한 효율성
      - 직접 DOM 조작: React나 Vue는 가상 DOM을 사용하여 변경 사항을 관리하지만, Svelte는 컴파일 단계에서 직접 DOM 조작을 위한 코드를 생성합니다. 이는 DOM 업데이트를 더 효율적으로 처리하고, 개발자가 가상 DOM을 이해하거나 관리할 필요가 없도록 해줍니다.
      
      6. 보다 일관된 성능
      - 재렌더링 최소화: Svelte는 상태 변경 시 필요한 부분만 업데이트하도록 컴파일되기 때문에 불필요한 재렌더링을 줄여줍니다. React나 Vue에서의 최적화 작업(예: React의 shouldComponentUpdate 또는 Vue의 컴포넌트 업데이트 라이프사이클)이 Svelte에서는 대부분 필요하지 않습니다.

      핵심적인 기능을 쉽고 빠르게 Web 으로 구현하고자 하는 명확한 목표를 가지고 Demo Web 를 만들거나 Admin Web 을 구축해야 하는 상황이라면,

      Svelte 가 최적의 선택지라는 확신을 가지게 되었습니다. 이로 인해, Gen.View 프로젝트에 사용할 Web Framework 로 Svelte 를 선택하게 되었습니다.

      Svelte 의 매력 포인트

      Svelte 를 사용하며 매료되었던 몇 가지 매력 포인트를 간략히 정리하며 글을 마무리하고자 합니다.


      편리한 상태 관리 & 반응형 선언문 (Reactivity)

      Svelt 를 사용하면, Javascript 언어로 선언한 변수를 별도의 복잡한 상태 관리 Library 없이 그대로 활용할 수 있습니다.

      즉, 간단히 선언한 변수의 값이 변경되면 자동으로 UI 가 Update 됩니다. 또한, 복잡한 계산이나 의존성을 관리할 때는 반응형 선언문 ($:) 을 사용할 수 있습니다.

      이는 특정 변수나 값이 변경될 때마다 자동으로 관련 Logic 을 실행시켜, 상태 Update 를 더욱 쉽게 처리할 수 있습니다.

      <script>
        let count = 0;
      
        // count가 변경될 때 자동으로 실행
        $: double = count * 2;
      </script>
      
      <p>Count: {count}</p>
      <p>Double: {double}</p>
      
      <button on:click={() => count += 1}>Increment</button>

      편리한 스타일 지정 (Scoped CSS)

      Svelte 를 사용하면, 동일한 파일에 작성한 Style 지정 사항이 자동으로 해당 Component 에 적용됩니다. 별도의 설정 없이 스코프가 지정된 CSS 를 사용할 수 있습니다.

      <h1>Hello, styled text!</h1>
      <style>
        h1 {
          color: blue;
        }
      </style>

      편리한 HTML 활용

      Svelte 를 사용하면, 다른 Web Framework 와 달리 JSX 나 별도의 Template 문법을 따로 숙지할 필요가 없습니다. HTML, CSS, JavaScript 를 그대로 사용하여 Code 를 작성할 수 있으며 DOM 조작이 직관적입니다.

      <script>
        let name = '';
      </script>
      
      <input type="text" bind:value={name} placeholder="Enter your name" />
      <p>Your name is: {name}</p>

      Frontend 개발 직군이 아닌 비전문가가 Frontend 분야를 학습하는 과정에서 경험할 내용들을 이어질 [Gen.View | FE] 시리즈에서 공유해드릴 예정입니다.

      잘못된 내용에 대한 지적 사항이나 문의 사항이 있다면 언제든지 편하게 연락해주세요!

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      김우영 님의 최신 블로그

      더보기
      동영상 기고하기