[ Essay - Technology ] 바이브 코딩의 허와 실

이미지
지금 우리는 가히 AI 시대라는 패러다임의 전환에 시대에 살고 있다고 해도 과언이 아니다. 특히, IT 업계에서 대다수의 작업량을 차지하는 프로그래밍의 영역에서 생성 AI를 이용한 생산성 향상의 가능성이 보이면서 어느 분야보다 가장 빠르게 괄목적인 성과를 이루고 있는듯 하다. 고작 몇 년전에는 커서에 의해 프로그래밍을 AI에게 프로그래밍을 위임하는 것이 더 나을 수 있다는 것이 어느정도 증명되면서, 작년에는 Claude Code의 영향으로 인해 이러한 이슈가 좀 더 가속화되지 않았나 싶다. 이러한 굉장히 빠르게 이루어지고 있는 생성형 AI 솔루션의 발달은 개발자의 종말론을 더더욱 부각시키면서 업계 전반이 큰 변화를 겪고 있는 것으로 보인다. 특히 이러한 변화 속에서 “프로그래밍을 몰라도 생성형 AI만 있으면 제품을 만들 수 있다”는  주장도 자연스럽게 힘을 얻고 있다. 최근에는 Saas 솔루션은 종말할 것이라는 다소 파격적인 이야기도 들리는 것으로 보면 소프트웨어 업계가 큰 격변의 시기가 온것임에는 틀림 없어 보인다. 허(虛): 빠르게 만들 수 있다는 환상 이런 상황에서 가장 주목받는 주장들은 서론에서 언급했다시피 ‘프로그래밍을 알지 못한다고 하더라도  생성형AI를 이용하면 빠르게 제품을 개발이 가능하다’라는 주장이고, 실제로 이는 어느 정도 타당성이 있어 보인다. 정말로 움직이는 결과물을 단 몇초 만에 보여주기 때문이다. 하지만, 이러한 ‘빠르게 제품 개발 가능하다’는 주장의 가장 큰 맹점이 있는데 개발자의 존재 이유가 단순한 제품이나 기능개발에 있지 않다는 점이다. 만약, AI를 통해 그럴듯 한 솔루션을 만들었다고 치자. 이것에 얼마만큼의 비지니스성과 지속가능성이 있을까? 예컨대 AI에게 넷플릭스나 트위터, 인스타그램과 같은 페이지를 만들어달라고 요청한다면, 아마 실제로 그럴듯 하게 만들어 줄 것 이다. 이러한 인기 서비스들은 토이 프로젝트로 다루기 쉽고, 하나의 트렌드로 자리 잡아 관련 자료를 찾기도 어렵지 않다. 코드 또한 깃허브에 충분...

[ Web ] 웹 애플리케이션 아키텍처의 유형 (Types of Web Application Architecture)

이 글은 아래의 링크의  

이전 포스팅 「웹 애플리케이션 아키텍처」의 다음 글로 
이러한 「웹 애플리케이션 아키텍처의 유형」에 대해 이야기 해보고,

그 다음으로 개발자들이 흔히들 알고 있는 
Django, Ruby On Rails, Spring이 실제 속해 있는 
「웹 애플리케이션 서버 아키텍처」에 대해 알아보려고 한다.

우선 이번 글은 위에서 언급했다시피 
「웹 애플리케이션 아키텍처의 유형」에 대한 글이다.

웹 애플리케이션 아키텍처는 
웹 애플리케이션 서버 아키텍처(프레임 워크가 포함된)보다 
좀 더 추상적인 아키텍처인데,

웹 애플리케이션 서버 아키텍처는 
클라이언트 단과 서버단을 나누어 아키텍처를 그린다면,

웹 애플리케이션 아키텍처는 이 보다 좀 더 큰 틀로
서버와 페이지 간의 상호 작용을 나타낸다. 

서버 측 HTML 웹 애플리케이션 아키텍처
(Server-Side HTML Web Application Architecture)



서버 측(Server Side) HTML은 
일반적인 웹 응용 애플리케이션 아키텍처이다.

이 아키텍처는 Web 1.0으로 불리우기도 하는데

서버에서 생성 한 HTML 문서를 통해 작동되며
결과는 HTML 페이지로 구성된다.

이 아키텍처는 가장 오래된 아키텍처 중 하나로 
특정 요구에 맞는 서버 언어 및 프레임 워크를 사용할 수 있다.

또한 서버의 특정 HTML 컨텐츠가 기본적으로 
하나의 URL로 전송되므로 연결성이 뛰어나다고 할 수 있지만,

서버와 사용자간에 엄청난 양의 정보가 교환되기 때문에 
성능면에서는 떨어 질 수 있다는 것을 고려해야 한다.

일반적으로 클라이언트는 
전체 페이지 대신에 일부를 다시 로드 할 것이다.

이런 성능에 문제가 있는 한
모바일 환경에서는 사용하지 않는 것이 좋다.

또한 즉각적인 데이터 업데이트를 보내거나, 
실시간으로 변경하는 기능은 없으며

AJAXWebSockets을 적용하는 서버 및 사용자 업데이트만 가능하다.

서버 측은 보안을 제공 하며
컨텐츠가 일정하므로 프론트 엔드(Front - end)단에서 
테스트를 위한 JavaScript 도구가 필요하지 않다.

결과적으로 이런 아키텍처를 사용하게 된다면
가장 쉽게 웹 애플리케이션을 구현할 수 있으나,

서버와 클라이언트 간에 
엄청난 양의 데이터 교환이 필요하므로
비교적 성능면에서는 떨어지며

모바일에서 데스크톱 애플리케이션 혹은
데스크톱 애플리케이션에서 모바일 애플리케이션으로의 변환
즉, 웹/앱 환경을 구축하기 힘들다.

따라서 단일 웹 애플리케이션으로 사용하기에는 
적합한 아키텍처라고 볼 수 없을 것이다.

JS 생성 위젯(AJAX)
(JS generation widgets)



서버 측(Server Side) HTML 애플리케이션 아키텍처에서 진화된 아키텍처로서,

AJAX(Asynchronous JavaScript and XML)는 서버 측 접근 방식이다.

차이점은 표시된 페이지가 위젯(Widgets)으로 구성되어 있다는 것 이다.

JSON 또는 AJAX 쿼리를 사용하여 위젯에 정보를 업로드 할 수 있다.

위젯의 장점은 클라이언트 측에서 
웹 애플리케이션을 사용할 필요가 없기 때문에
HTML 데이터(HTML of chunks)를 업로드 할 때 속도를 높일 수 있다.

또한 모든 위젯이 개별적으로 작동해 
페이지 자체에 영향을 주지 않고,
요청된 페이지 부분에만 영향을 준다는 점이다.

따라서 전송 된 데이터의 양이 적으며 응답 속도도 빠르다.

이 아키텍처는 데이터를 JSON으로 전송이 가능한 등의 성능을 향상 시킬 수 있다.

다만, 이 아키텍처는 서버 측(Server Side) 웹 서비스의 기술과
클라이언트 측(Client Side) JavaScript 프레임 워크를 사용해야만 하며,

[1]Hash-Bang
과 같이 
각 요소를 연결 해주는 기능에는 특정 매커니즘이 필요하다.

즉 이 아키텍처를 사용한다면 
독립적으로 움직이는 위젯으로부터 
부분적으로 응답(Request) 및 반응(Response)을 처리할 수 있게 되어
서버 측(Server Side) HTML 애플리케이션 아키텍처보다 
뛰어난 성능을 기대할 수 있다. 

하지만, 위젯이 포함된 페이지를 처음 실행될 때 다소 느릴 수 있고,

JavaScript 관련 개발 도구들을 알고 
Hash Bang 이라는 매커니즘을 알고 있어야 한다.

이에 따라 개발 속도는 더뎌질 것이다.

또한 서버 측(Server Side) HTML 애플리케이션 아키텍처와 동일하게
웹/앱의 전환은 크게 기대할 수 없다.

따라서 단일 웹 애플리케이션으로 사용하기에는 
적합한 아키텍처라고 볼 수 없을 것이다.

서비스 지향 단일 페이지 애플리케이션
(Service-oriented single-page Web Apps)


SPA(Single Page Application)은 서버에서 
새로운 페이지를 로드하지 않고,

기존 페이지 내의 업데이트 된 데이터만 
상호작용 하는 동적 프레임 워크이다.

이러한 아키텍처를 기반으로 둔 애플리케이션은 
필요한 컨텐츠의 세부 정보만 요청 한다.

SPA를 사용하면 새로운 요소가 업데이트되는 동안 
페이지와 계속해서 상호 작용을 하기 때문에 
페이지를 다시 불러오는 것과 같이 
페이지와 사용자간의 빠른 상호 작용이 가능하다.

이 아키텍처를 사용하면 알림이터 스트리밍을 구현 할 수 있다.
일반적으로 서버 쿼리는 JSON, Ehsms, HTML 형식을 사용하여 
다양한 유형의 데이터를 전달 할 수 있다.

즉, 이 아키텍처를 사용한다면
업데이트를 포함한 기타 서버와 
클라이언트간의 상호 작용을 최소화 할 수 있는 것을 포함해

웹 로직이 대게 클라이언트 측에 있기 때문에 
서버 측은 중요한 비지니스 로직만 처리해주면 된다.
이에 따라 확장성 또한 훌륭하고 할 수 있을 것이다.

또한 웹/앱의 전환도 유연하다.

성능 면으로만 보면
위의 2개의 아키텍처에 비해 가장 뛰어나다고 할 수 있지만,

개발 속도가 느리며, 클라이언트 단이 무겁기 때문에
그 만큼 클라이언트 쪽에서 리소스가 쏠리며,
클라이언트에서 실행되어야 하므로 
소스를 포함한 데이터들이 공개되기 때문에 보안이 가장 취약하다.

이에 포함되어 있는 것이 쿠키와 관련된 기술들이다. 

따라서 이를 해결한 보안 아키텍처가 별도로 필요하다.

그렇다면 어떤 아키텍처를 사용해야할까?


그렇다면 어떤 아키텍처를 사용하는 것이 적절할까?

물론 이에 대한 해답을 바라는 사람들에게는 
매우 안타까운 소식이겠지만, 

상황에 따라 다르다.

하지만, 현재(2020년 기준) 대부분의 웹 애플리케이션에서
SPA(Single Page Application) 아키텍처를 사용하고 있기 때문에

대세에 따르는 것도 한 가지 방법일 수도 있다.

하지만, 
꼭 그것이 모든 경우의 솔루션이 될 수 는 없다.

왜냐하면 진정한 솔루션이라는 것은 선택지 중에서 
최고의 효율성을 제시할 수 있어야 되기 때문이다.

하지만 3개 종류의 선택지가 있다고 
꼭 3개 중 하나 만을 선택하라는 법은 없다.

경우에 따라서는 아키텍처의 장점만을 살려서
시스템을 통합하는 것으로도 훌륭한 솔루션이 될 수 있다.

따라서 어떤 것 아키텍처를 사용해야될지에 대한 해답은
엔지니어 혹은 아키텍처들에게 물어보고 듣는 것이 빠를 것이다. 




[1] Hash-Bang : 

SheBang이라고도 불리우는 메커니즘으로
URL에 붙는 #! 같은 것들을 말한다.

여기서 Hash는 #를 뜻하고 Bang은 !를 뜻하는데

Hash(#)가 포함된 URL을 브라우저가 받으면 
Hash 앞에 일부만 페이지 요청으로 처리하고,
Hash 뒷 부분은 페이지를 관련 위치로 이동하기 위해 보관 된다.



참고 :







이력 : 
2020.08.10 내용 대폭 개선 및 Web Framework의 역사 추가

2020.09.17 내용 다듬기 및 Web Framework의 역사 이동



아이콘 출처:

아이콘 제작자 DinosoftLabs from www.flaticon.com
아이콘 제작자 srip from www.flaticon.com
아이콘 제작자 Freepik from www.flaticon.com
아이콘 제작자 Smashicons from www.flaticon.com





이 블로그의 인기 게시물

[ Web ] 서버 사이드(Sever Side) ? 클라이언트 사이드(Client Side)? 1 [서론, 클라이언트 사이드(Client Side)]

[ Web ] 웹 애플리케이션 아키텍처 (Web Application Architecture)

[ Web ] 웹 애플리케이션 서버 아키텍처의 정의 및 유형 ( Define and Types of Web Application Server Architecture )