[카테고리:] 프로그래밍

  • 2025년 반드시 알아야할 블록체인 개발 트렌드 5가지

    2025년 반드시 알아야할 블록체인 개발 트렌드 5가지

    지난 몇년동안 블록체인의 도입은 전세계로 확대되었으며, 지속적인 성장이 기대되는 분야로 떠오르고 있습니다. 2031년까지 3,370억 달러 규모에 도달할 것으로 예상되며, 2024년부터 2031년까지 연평균 성장률은 54.70%까지 기대된다고 하는데요. 블록체인 기술은 확실히 빠르게 성장하는 분야기에, 최신 트렌드를 꾸준히 따라가야하는게 핵심입니다. 현재 블록체인 개발 동향은 어떻게 흐르고 있는지 5가지로 나눠 소개드리겠습니다. 

     

     

    1. 2025년 블록체인 개발 동향 5


    1)블록체인 서비스(자체 블록체인 개발)

    Web3는 분산형 애플리케이션(dApps)과 스마트 계약을 통해 사용자에게 직접적인 소유권과 제어권을 제공합니다. 반면 BaaS는 기업과 개발자가 자체 블록체인 네트워크를 설정하고 유지 관리할 필요 없이 블록체인 애플리케이션을 빌드, 배포 및 관리할 수 있도록 클라우드 서비스 제공자가 블록체인 인프라와 도구를 제공하는 것을 말하는데요. BaaS 플랫폼은 이러한 dApps를 쉽게 개발할 수 있도록 지원하며, 기업들이 Web3 환경에서 더 많은 혁신을 이룰 수 있도록 돕습니다.

    2) DeFi의 성장

    분산형 금융(DeFi)은 블록체인 기술과 암호화폐를 적용하여 분산된 방식으로 기존 금융 시스템을 재창조하고 개선하는 것을 말합니다. DeFi는 은행, 브로커 및 기타 금융 기관과 같은 중개자를 없애 개인이 자산을 직접 통제하고 중앙 집중화된 권한에 의존하지 않고도 금융 활동에 참여할 수 있도록 하는 것을 목표로 합니다. Web3는 DeFi의 핵심 요소로, 사용자들이 중앙 집중화된 금융 기관 없이도 직접 금융 거래를 수행할 수 있게 합니다. 

     

    3) AI와 블록체인 융합

    Web3 환경에서 AI는 사용자 데이터를 안전하게 관리하고, 개인화된 서비스를 제공하는 데 중요한 역할을 할 수 있습니다. 블록체인은 AI 모델의 학습 데이터와 결과를 안전하게 저장하고 공유하는 데 기여할 수 있습니다.

     

    4) 스테이블코인

    스테이블코인은 안정적인 가치를 유지하도록 설계된 암호화폐로, 종종 미국 달러나 자산 바구니와 같은 특정 법정 통화에 고정됩니다. Web3에서는 스테이블코인이 사용자 간의 거래를 안정적으로 지원하는 중요한 수단으로 자리 잡을 수 있습니다. 사용자들은 스테이블코인으로 변동성이 큰 암호화폐 시장에서 안정적인 거래를 할 수 있습니다.

     

     

    5) 아시아와 중동, 거대 블록체인 시장 등극 예상

    예측과 보고서에 따르면 블록체인은 아시아와 중동 시장에서 더 많은 주목과 집중을 받을 것으로 보입니다. 실제로, 아시아 최대 벤처 캐피털 20개 중 13개 이상 이 지난 2년 동안 블록체인 개발 플랫폼에 투자했다고 합니다. 2024년 중동 및 북아프리카(MENA) 지역은 세계에서 7번째로 큰 암호화폐 시장으로 떠올랐으며, 2023년 7월부터 2024년 6월까지 약 3,387억 달러의 온체인 가치를 처리했습니다 . 이 수치는 글로벌 거래량의 7.5%를 차지하며, 암호화폐 경제에서 이 지역의 영향력이 커지고 있음을 보여줍니다.

     

     

     

    2. 이러한  2025년 블록체인 트렌드를 모두 담은 강의! 


    앞선 모든 블록체인 트렌드, 모두 배워야 2025년 블록체인 개발자로 제대로 입문할 수 있겠죠? 그래서 블록체인 기업 B-Harvest가 직접 블록체인 개발을 위한 로드맵부터, Web3 환경에서 필수인 체인 개발, 디앱개발 실습프로젝트까지 구성한 강의가 오픈했습니다! 난이도별 16가지 예제 실습은 물론 취업 자료 kit, 2025 블록체인 트렌드 zip도 받을 수 있도록 준비했으니 관심 있으시분은 서둘러 만나보세요!

     

    자세한 강의 내용 살펴보기

     


    원문 출처 :
    2025년에 따라야 할 18가지 블록체인 기술 트렌드

  • 요즘 대세 MSA, 잘 알고 사용해야 하는 이유 ft. 잘못된 성공 방정식이 가지고 온 비극

    요즘 대세 MSA, 잘 알고 사용해야 하는 이유 ft. 잘못된 성공 방정식이 가지고 온 비극

     | 마이크로서비스 아키텍처의 등장

     

    마이크로서비스 아키텍처가 언제 시작되었다고 할지는 관점에 따라 다를 수 있지만, 2014년 3월에 마틴 파울러와 샘 뉴먼이 발표한 마이크로서비스에 관한 글이 이 아키텍처의 확산에 큰 영향을 미친 것은 분명합니다. 그리고 사실, 이 글에서 제시된 마이크로서비스 아키텍처 개념은 기존 소프트웨어 개발에서 발생하는 문제들을 해결하기 위해 많은 프로젝트 현장에서 시도되고 있던 다양한 방법들을 정리한 것이기 때문에, 많은 아키텍트들과 개발자들에게 이 개념이 받아들이기 어렵다거나 뜬구름 같은 느낌으로 다가오지는 않았습니다. 

    대부분이 ‘마음만 먹으면 가능한’ 것들이었으니까요. 특히 당시에는 넷플릭스 OSS 스택이 출시된 상태였고, 퍼블릭 클라우드 환경의 활용도 활발히 논의되던 시기였기에 기술적으로도 큰 제약이  없었습니다. 게다가 모바일 애플리케이션 시장이 폭발적으로 성장하면서 새로운 시스템 구축에 대한 필요와 예산, 인력도 충분했던 상황이었죠. 덕분에 국내의 보수적인 소프트웨어 개발 현장에서도 마이크로서비스 아키텍처는 비교적 빠르게 확산되고 대부분 성공적으로 자리 잡을 수 있었습니다.

    문제는 마이크로서비스 아키텍처의 확산이 지나치게 빠르고 성공적으로 이루어졌다는 점입니다. 일반적으로 마이크로서비스 아키텍처의 부작용이라 하면, 메모리와 CPU 수준에서 처리할 수 있는 작업이 네트워크 레벨로 옮겨지면서 발생하는 성능 문제, 조직 구조와 맞지 않는 서비스 경계로 인해 발생하는 끝없는 조직 개편과 리팩토링, 자동화되지 못한 빌드와 배포 파이프라인으로 인해 점점 커지는 배포 작업, 조직 간 커뮤니케이션 부재로 인한 오해와 오류 등이 떠오릅니다. 현재는 대부분 이러한 부작용을 방지하기 위해 마이크로서비스를 도입하기 전에 신중한 준비와 고려가 필요하다는 점을 알고 있지만, 막 마이크로서비스가 유행하기 시작했던 당시에는 ‘우리도 마이크로서비스를 도입했다’라는 선언의 유혹을 이기지 못한 많은 프로젝트 현장이 충분한 준비와 고려없이 마이크로서비스 아키텍처라는 간판을 내걸기 시작했습니다.

    그 결과, 마이크로서비스 아키텍처는 현장에 지나치게 빠르게 퍼져 나갔고, 부작용에 대한 검증이 이루어지기도 전에 ‘성공’이라는 평가가 내려졌습니다. 누군가는 성공의 보상을 받고 떠났지만, 남은 사람들은 ‘성공한 프로젝트’를 이어받아 부작용을 감내하기 시작했습니다. 그리고 그 과정에서 마이크로서비스 아키텍처에 상처받는 개발자들이 하나둘 등장하게 되죠.

     

     | 마이크로서비스 아키텍처는 왜 급하게 확산되었을까?

    사실, 급하게 확산되는 상황은 마이크로서비스 아키텍처에서만 유별나게 나타나는 것은 아닙니다. 특히 연간 목표나 KPI를 위주로 개발 목표가 정해지는 기관이나 회사에서 어떤 새로운 기술 트렌드가 확산될 때 이 기술의 ‘적용’이 목표가 되는 경우가 많은 것이지요. 모바일 애플리케이션, 챗봇, 머신러닝, 클라우드, LLM, 마이크로서비스 아키텍처는 모두 각기 그 기술이 지향하는 목표와 풀고자 하는 문제가 분명하게 있는데. 현장에서는 그 기술이 왜 트렌드가 되었는지, 어떤 문제를 해결하고자 하는지, 무엇을 만들고자 하는지에 관심을 가지지 않고 ‘우리도 이거 적용했어요’라는 보고를 올리기 위한 프로젝트를 발주하고 있는 것입니다. 이러한 이유로 모바일 애플리케이션의 경우 앱 스토어에 등록만 하면 성공이고, 챗봇은 고객센터 전화번호만 알려줘도 성공이 되는, 프로젝트가 반드시 성공할 수밖에 없는 상황들이 만들어집니다.

    마이크로서비스 아키텍처의 경우도 마찬가지로, 프로젝트의 성공과 실패를 판정하는 사람들이 이 서비스들이 제대로 분리되었는지, 지속적으로 배포 가능한 환경을 구축했는지, 변경에는 유연하게 대응할 수 있는지 등에 대한 판단을 할 수 있을리가 없으니 대부분의 마이크로서비스 전환 프로젝트는 프리패스로 성공할 수밖에 없었던 것이죠. 물론 그 많은 프로젝트들이 다 엉망이었다거나 하는 척만 했다는 것은 아닙니다. 대부분은 각자가 이해한 방식대로 마이크로서비스 아키텍처를 구현했죠. 하지만 그 목표가 ‘마이크로서비스 아키텍처의 적용’이었던 많은 프로젝트들은 마이크로서비스를 적용해서 얻고자 했던 가치가 무엇인지 모르는 상태로 대부분 어정쩡하게 성공했습니다.

    이 상황들 자체는 조금 답답할 수는 있어도 아주 큰 문제라고 보기는 어렵지만, 문제는 여기서 등장합니다. 어느 순간부터 마이크로서비스 아키텍처가 목표가 아닌 수단이 되기 시작했고, 어정쩡한 성공의 기억은 미화되어 그냥 성공의 기억으로 남게 되었습니다. 그 결과, 새로운 프로젝트를 마이크로서비스 아키텍처로 만드는 것이 당연해지게 되어 서비스를 억지로라도 나눠야되는 상황들이 발생하기 시작했고, 쿠버네티스 (Kuberentes) 환경에서 유레카(Eureka)를 띄우는 것과 같은 망측한 결과물이 나타나기 시작했습니다. 2016년쯤에 완성된 마이크로서비스 아키텍처는 넷플릭스 스택이나 스프링 클라우드 스택을 사용하는 것이 당연했고, 이 스택의 적용이 성공했으니 퍼블릭 클라우드와 쿠버네티스를 기반으로 하는 2018년이나 2019년도의 프로젝트에서도 성공 방정식을 적용하듯이 기존 스택들을 끌어오기 시작한 것이죠.

     

     | 중요한 것은 마이크로서비스 아키텍처가 아니다

    사실 마이크로서비스 아키텍처는 그렇게 중요하지 않습니다. 정확히 말하면 저 타이틀 자체는 아무것도 아니라는 것이죠. 진짜 중요한 것은 마이크로서비스 아키텍처가 왜 시스템을 여러 작은 서비스로 분할하려고 하는지에 대한 배경과 목적입니다. 지난 10년간 너무나 많은 프로젝트들이 마이크로서비스 아키텍처라는 타이틀에 집착하여 나누지 않아도 될 시스템을 나누게 되었고, 그 결과 모놀리식 시스템이 더 적합한 프로젝트들이 마이크로 서비스로 분활되어 부작용만 뿜어내는 구조를 가지게 되었습니다. ‘이 시스템은 몇 개의 서비스로 분할되는 것이 맞는가?’와 같은 구조적인 해석을 요구하는 질문에 딱 맞아떨어지는 정답이 없다보니 마이크로서비스 아키텍처에 대한 각각의 해석이 난무하게 되었고, 이 해석이 각자의 성공 경험으로 치환되면서 세상에 수많은 ‘우리식 마이크로서비스 아키텍처’가 생겨나게 되었습니다. 

    마이크로서비스 아키텍처가 본격적으로 확산되기 시작한지 10년이 되었고, 그 시기에 만들어진 시스템들이 이제 레거시 시스템이 되어가는 이 시점에서 마이크로서비스 아키텍처가 왜 등장하게 되었고 그 이전에는 어떤 문제들이 있었는지, 혹시 마이크로서비스 아키텍처가 당연하게 쓰이는 지금에는 그 문제들이 다 해결되었는지 생각해보는 것은 목표 지향적으로 달려온 소프트웨어 개발 현장에 적절한 브레이크가 될 수 있을 것이라고 생각합니다. 조금 역설적으로 들릴 수 있지만, 마이크로서비스 아키텍처에 대한 이해가 깊어지면 오히려 마이크로서비스 아키텍처를 사용하지 않는 선택을 할 수도 있을 것이고, 반대로 마이크로서비스 아키텍처를 정말 필요한 곳에 적절하게 적용할 수도 있을 것입니다.

    대부분의 마이크로서비스 아키텍처 (MSA) 강의나 도서에서는 원론적인 이야기만 하고, 이 마이크로서비스 아키텍처가 가진 실질적인 문제점들을 숨깁니다.

    하지만, 패스트캠퍼스에서 출시한 [MSA 워크샵 : 12가지 핵심 기술로 구현하는 MSA 실무 프로젝트] 강의에서는 MSA 실무자들을 위해 MSA 구현시 발생하는 문제 상황들과 주의해야 할 기술들까지 단점부터 장점까지! 전부 알려줍니다.

    개발자들이 가장 어려워하는 비동기 호출, 트랙잭션 처리, CQRS 패턴을 포함한 12가지 MSA 핵심기술은 물론, SNS 프로젝트로 실무에서 마주치는 다양한 실패 케이스까지 함께 해결해볼 수 있다고 하는데요.



    현장에서 발생하는 실무 이슈들을 담은 Q&A집까지 무료로 제공한다고 합니다!

    대기업 리드급 현직 개발자에게 배우는 실무 중심의 MSA, 지금 바로 만나보세요 >>

  • 요즘 핫하다는 Supabase, Next.js 조합 쓰는 이유 by. 개발자 노마드 준

    요즘 핫하다는 Supabase, Next.js 조합 쓰는 이유 by. 개발자 노마드 준

    모든 직장인들의 꿈 시간과 공간에 제약 받지 않으면서 돈을 벌 수 있는 노마드 삶!

    이를 이룬 노마드 개발자 분이 계신데요, 이 분이 선택한 웹앱 개발 킬러 조합이 있다고 합니다.

     

    바로  Supabase X  Next.js 조합 입니다.

    요즘 MZ 개발자들 사이에서도 유명한 조합이라고 하는데 한 번 알아볼까요?!





    Supabase란?

    가장 강력한 백엔드 및 DB 관리 서비스로 DB, 인증, 스토리지 등의 백엔드 기능을 서버 설정할 수 있으며, 복잡한 백엔드 관리 없이도 간편하게 구현할 수 있다는 장점을 갖고 있습니다. 

    Supabase의 주요 장점도 한 번 알아볼까요?!

    ✔ 강력한 관계형 데이터베이스인 PostgreSQL을 사용하여 데이터 관리의 유연성과 성능 제공

    ✔ 데이터베이스를 구축하면 Supabase가 자동으로 RESTful API를 생성

    ✔ 데이터베이스의 변화가 실시간으로 클라이언트에 반영될 수 있는 기능 제공

    ✔ 웹 기반의 직관적인 사용자 인터페이스를 통해 데이터베이스와 프로젝트를 쉽게 관리

     

    이러한 장점들 덕분에 Supabase는 현재 Firebase의 유력한 대안으로 떠오르고 있습니다. 

    또한 Supabase의 깃허브 스타 수 추이는 매우 가파르게 높아지고 있다고 합니다. (*아래 그래프 참조)

    이렇듯, Supabase는 오픈 소스라는 특성과 PostgreSQL의 강력한 기능은 개발자들에게 필요에 따라 플랫폼을 커스터마이징할 수 있는 유연성을 제공하고 있습니다.

     

    Next.js란?

    프론트엔드 개발 효율 끝판왕으로 SSR에 강해 속도도 빠르고, 앱 라우팅으로 관리가 쉬워 개발 생산성 높아 현재 인기 있는 기술 입니다.

    Next.js의 주요 장점은 아래와 같습니다.

    ✔ 서버 사이드 렌더링을 지원하여 초기 페이지 로드 속도를 향상시키고 SEO 최적화 가능

    ✔ API 라우트를 지원하여 서버리스 API를 쉽게 구축

    ✔ CSS-in-JS, CSS 모듈, Sass 등 다양한 스타일링 옵션을 지원하여 개발자가 선호하는 방식으로 스타일 적용

    ✔ 핫 리로딩, TypeScript 지원 등 개발자 친화적인 기능을 제공하여 효율적인 개발 환경 조성

    Next.js는 현재 React 프레임워크 중에서 1위를 차지하고 있으며, GitHub 내 14번째로 큰 프로젝트로 알려져 있습니다. 스타트업부터 대기업까지 다양한 산업에서 Next.js를 채택하고 있으며, 이는 개발의 효율성과 성능을 극대화하기 위한 선택으로 볼 수 있습니다.

     

     Supabase X  Next.js 조합?

     

    Supabase와 Next.js의 조합은 현재 많은 개발자들 사이에서 주목받고 있는 “킬러 조합”으로 불리고 있습니다. 

    그 이유를 한 번 알아볼까요?!

     

    ✔ 완벽한 백엔드와 프론트엔드 통합

    Supabase는 데이터베이스, 인증, 스토리지 등의 백엔드 기능을 제공하며, Next.js는 서버 사이드 렌더링 및 정적 사이트 생성을 지원합니다. 이 두 가지를 결합하면, 데이터베이스와 클라이언트 애플리케이션 간의 원활한 통신이 가능해집니다. 개발자는 복잡한 백엔드 설정 없이도 강력한 애플리케이션을 쉽게 구축할 수 있습니다.

     

    ✔ 빠른 개발 속도

    Supabase는 RESTful API를 자동으로 생성하고, Next.js는 파일 기반 라우팅을 제공하여 개발자가 페이지를 쉽게 추가하고 관리할 수 있습니다. 이러한 특성 덕분에 개발자는 더 빠르게 프로토타입을 만들고, 기능을 추가하며, 전체 애플리케이션을 신속하게 출시할 수 있습니다.

     

    ✔ 유연한 스타일링 옵션

    Next.js는 다양한 스타일링 옵션(CSS-in-JS, CSS 모듈 등)을 제공하고, Supabase는 데이터베이스에 저장된 리소스를 활용하여 동적인 스타일링을 가능하게 합니다. 이로 인해 개발자는 애플리케이션의 디자인과 사용자 경험을 최적화할 수 있습니다.

     

    ✔ 비용 효율성

    Supabase는 사용량 기반의 요금제를 제공하며, 많은 기능을 무료로 사용할 수 있습니다. Next.js 또한 오픈 소스이므로, 비용 부담 없이 두 기술을 활용하여 고성능 애플리케이션을 구축할 수 있습니다.

     

     빠르고 효율적인 웹앱 개발을 위한 노마드 준의 노하우!

    노마드 준이 알려주는 웹앱 킬러 조합🔫 

     

    ✔️ 최신 개발 스택으로 풀스택 웹앱 개발 

    ✔️ 4가지 프로젝트로 실전 웹앱 정복 

    ✔️ Cursor AI 등 실전 AI 활용 노하우 전수 

    ✔️ 노마드 준의 보일러 플레이트 코드 모음집까지!

    강의 보러가기  >>>>

  • 구글에서 알려주는 클린 아키텍처만 알아서는 안되는 이유

    구글에서 알려주는 클린 아키텍처만 알아서는 안되는 이유

    #앱 개발

    #아키텍처

    #안드로이드 개발자

     

     

    2024년 2월, 구글이 배포한 ‘Now in android’ 앱 예제가 개발자들 사이에서 큰 논란을 불러일으켰습니다.

    구글의 앱 예제가 기존의 클린 아키텍처와 SOLID 원칙을 따르지 않는다는 이유에서였는데요.

     

     

    Yazon2006 이라는 개발자가 구글의 앱 구조는 의존 관계를 역전시켜, 도메인 계층이 데이터 계층에 의존하도록 설계되었다며 클린 아키텍처의 핵심 원칙을 위반했다고 주장했습니다.

     

    → 클린 아키텍처는 비즈니스 로직을 포함한 도메인 계층이 데이터 계층에 의존해서는 안된다는 원칙이 있으며, 이 원칙에 따르면 데이터 계층은 도메인 계층에 의존해야 하고 도메인 계층은 기술적 세부 사항에 독립적이어야 합니다.

     

    따라서 Now in android가 클린 아키텍처를 따르고 있지 않기 때문에 이를 참고하는 안드로이드 주니어 개발자에게 혼동을 줄 수 있으니 클린 아키텍처를 따르도록 프로젝트의 구조를 변경하거나, 클린 아키텍처를 따르지 않는다고 명시하라고 주장했고,

     

     

    이로 인해 구글은 문서에 “구글 가이드에 나와있는 아키텍처는 클린 아키텍처와 다를 수 있다” 는 내용을 추가합니다. 

     

    하지만, “안드로이드 앱 아키텍처” 구글링을 통해 공식 아키텍처 가이드를 찾고, 구글 안드로이드 가이드에 있는 예제를 찾아서 권장 사항을 맹목적으로 따라하던 주니어 앱 개발자들은 

    클린 아키텍처에 대한 각기 다른 해석과 설명으로 어떤 아키텍처를 써야할지 혼란에 빠지게 되는데요.

     

    그렇다면, 구글 가이드의 아키텍처와 기존의 클린 아키텍처 중 어느 것을 사용해야 하는 걸까요?

     

     | 구글 가이드의 아키텍처 vs 클린 아키텍처

     

     

    앞서, 구글 가이드에 있는 앱 아키텍처는 기존에 알던 클린 아키텍처와는 다르다고 말씀드렸는데요. 

    구글 가이드에서 제시하는 아키텍처와 클린 아키텍처는 모두 안드로이드 앱 개발에서 각각 중요한 역할을 하지만, 설계 철학과 구조적인 차이점이 있습니다.

    1. 구조적 차이

    – 구글 가이드: 구글은 안드로이드 개발을 위해 MVVM(Model-View-ViewModel) 패턴을 기반으로 한 아키텍처를 권장합니다. MVVM은 앱의 데이터와 UI를 분리하여 ViewModel을 통해 데이터를 관리하고, UI와 비즈니스 로직 사이의 의존성을 줄이는 것을 목표로 하는데요. 이 방식은 간결한 구조와 빠른 개발 속도를 중시하며, 안드로이드 앱 개발에 최적화된 경량화된 패턴을 제공합니다.

    – 클린 아키텍처: 클린 아키텍처는 소프트웨어를 여러 계층(Layer)으로 나누어 구조화하는 패턴을 가지고 있습니다. 이를 통해 비즈니스 로직(도메인), 애플리케이션 로직 및 UI를 명확하게 분리하는데요. 클린 아키텍처는 의존성 역전(Dependency Inversion)을 통해, 상위 계층이 하위 계층에 의존하지 않고 인터페이스를 통해 상호작용하게 하여, 유연성과 확장성을 극대화합니다.

     

    (출처 ㅡ Medium – Now in android는 클린 아키텍처와 SOLID를 따르지 않는다”)



    2. 의존성 관리

    – 구글 가이드: 구글에 가이드에 있는 아키텍처는 주로 의존성 주입(Dependency Injection)을 통해 클래스 간 의존성을 관리하며, ViewModel과 LiveData 같은 안드로이드 프레임워크에 의존하는 경우가 많습니다. 이러한 의존성은 빠르게 코드를 작성하는 데 유리하지만, 특정 프레임워크에 종속될 수 있습니다.

    – 클린 아키텍처: 클린 아키텍처는 의존성 역전 원칙(Dependency Inversion Principle, DIP)을 따르며, 상위 계층이 하위 계층에 직접 의존하지 않도록 인터페이스를 사용합니다. 비즈니스 로직이 외부 UI나 데이터베이스 같은 인프라 계층에 의존하지 않기 때문에, 각 계층은 독립적으로 테스트하거나 변경할 수 있습니다.

     

    3. 확장성과 유지보수

    – 구글 가이드: 구글의 권장 아키텍처는 상대적으로 간단하고 빠르게 구현할 수 있으며, 소규모 앱에서 매우 효과적입니다. 하지만 규모가 커질수록 복잡해질 수 있고, 비즈니스 로직과 UI 간의 의존성이 남아있을 가능성이 있어 유지보수가 어렵게 될 수 있습니다.

    – 클린 아키텍처: 반면 클린 아키텍처는 여러 계층이 독립적으로 동작하므로, 유지보수와 확장이 용이합니다. 특히, 앱이 커질수록 이 아키텍처의 장점이 극대화되는데요. 테스트 가능성도 높아져, 각 계층을 독립적으로 테스트할 수 있는 구조입니다. 다만 초기 설계와 구현은 구글 가이드 방식보다 복잡할 수 있는 단점을 가지고 있습니다.

     

    4. 사용 사례

    – 구글 가이드: 구글의 아키텍처 가이드는 안드로이드 개발에서 자주 사용하는 MVVM 패턴을 중심으로 구성되어 있어, 안드로이드 앱 개발에 특화된 방식을 제시합니다. 이는 소규모 프로젝트나 MVP를 빠르게 구현하는 데 유리하죠.

    – 클린 아키텍처: 클린 아키텍처는 어떤 플랫폼에서도 적용할 수 있는 일반적인 소프트웨어 설계 패턴으로 안드로이드뿐 아니라 웹, 서버 등 다양한 분야에서 사용할 수 있으며, 특히 대규모 시스템에서 유리합니다. 하지만 안드로이드 앱에 적용하려면, MVVM이나 구글 가이드와의 조화를 잘 고려해야 합니다.

     

    결론적으로 구글 가이드에 나와있는 아키텍처는 안드로이드 개발에 최적화된 간결하고 실용적인 구조를 제공하지만, 규모가 커질수록 유지보수와 확장성에서 한계를 느낄 수 있습니다. 반면, 클린 아키텍처는 장기적인 유지보수성과 확장성을 중시하는 설계 방식이지만, 초기 설정과 복잡성이 더 높습니다.

     

    따라서, 두 아키텍처의 차이점을 제대로 이해하고 프로젝트의 성격, 규모, 장기적인 목표에 따라 적합한 아키텍처를 선택하는 것이 중요한데요. 그러나 실무에서의 클린 아키텍처는, 사실 국내에선 아직까지 제대로 배울 수 있는 방법이 없었습니다.

     

    | 실무에서의 클린 아키텍처, 배우고 싶다면

     

    이처럼, 클린 아키텍처에 대한 각기 다른 해석과 설명으로 어떤 아키텍처를 써야할지 혼란에 빠진 주니어 앱 개발자들을 위해 14년차 안드로이드 개발자 테드박이 직접 등판하여 패스트캠퍼스와 함께 “확장성과 유지보수에 용이한 클린아키텍처” 강의를 출시했습니다!

     

    [테드박의 안드로이드 앱 개발 : 확장성과 유지보수에 용이한 클린 아키텍처]

     

    이 강의에서는 국내 GDE 4인 모두가 인정하는 개발자,

    대기업부터 창업, 스타트업 리드까지 다양한 규모의 프로젝트를 이끌었던 14년차 안드로이드 앱 개발자 테드박의 실무에서의 클린 아키텍처 적용 노하우를 공개한다고 하는데요.

     

    클린 아키텍처의 기본 원리부터 영화 프로젝트를 통한 실습, 그리고 5가지 상황별 클린 아키텍처의 실무 적용 팁까지, 클린 아키텍처의 모든 것을 알려준다고 합니다.

     

    테드박이 직접 답변해주는 질의응답 게시판부터, 강의에서 사용된 프로젝트 코드까지 모두 제공해드린다고 하니 놓치지 마세요!

     

    14년차 안드로이드 앱 개발자 테드박에게 클린 아키텍처 노하우를 전수받는 강의!

    지금 바로 확인해 보세요.

     

    https://bit.ly/3TMe5CL





  • 클라우드 입문할때 AWS만 배우면 안되는 이유(ft.Kubernetes, 리눅스..)

    클라우드 입문할때 AWS만 배우면 안되는 이유(ft.Kubernetes, 리눅스..)

    최근 IT 개발 환경들이 클라우드로 바뀐 것은 누구나 알고 있는 사실인데요. 그래서 각종 기업들도 클라우드에 집중해 서비스를 운영하고 있습니다. 이러한 속에서 최근 필수 인프라 & DevOps 기술들은 어떤 것이 있고, 이를 어떻게 배워야하는지 알아보겠습니다. 

     

     

    1.업계 표준이 된 인프라 & DevOps의 3가지 기술 스택

    1)AWS

    AWS는 컴퓨팅, 스토리지, 데이터베이스 등 다양한 인프라를 제공하는 국내 1위 클라우드 컴퓨팅 서비스입니다. AWS는 필요에 따라 리소스를 쉽게 확장하거나 축소할 수 있는 기능을 제공하는데요.  어떤 강점때문에 사용하는 걸까요? 

    ・ 비용 효율성 : 종량제 요금제를 통해 사용한 만큼만 비용을 지불할 수 있어 초기 투자 비용을 줄일 수 있습니다. 그래서 스타트업이나 중소기업에게 특히 사용하기 좋습니다.

    ・ 신뢰성 및 가용성 : AWS는 전 세계 여러 리전과 가용 영역을 통해 높은 가용성과 내구성을 제공하는데요. 서비스 중단을 최소화하고 비즈니스 연속성을 보장합니다.

    ・다양한 서비스와 도구 : AWS는 컴퓨팅, 스토리지, 데이터베이스, 머신러닝, IoT 등 다양한 서비스를 제공하여 기업이 필요에 맞는 솔루션을 쉽게 찾을 수 있도록 합니다. DevOps 도구도 풍부해  CI/CD, 인프라 관리 등을 효율적으로 수행하기 좋습니다.

    그 외에도 보안이 강력하고, 방대한 커뮤니티, 전 세계 센터 보유 등 다양한 이유로  AWS는 인프라 및 DevOps 분야에서 필수적인 기술 스택으로 자리 잡고 있습니다.

    2) Kubernetes

    쿠버네티스(Kubernetes) 는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리하는 IT 기업의 표준 오케스트레이션 도구인데요. 백엔드 아키텍쳐의 트렌드가 MSA+Container 구성이 되면서 다양한 오케스트레이션 도구가 등장했고 그중에 Kubernetes가 컨테이너 오케스트레이션의 표준이 된 상황이기 때문입니다. 어떤 강점 때문에 표준이 되었는지 알아볼까요?

    ・확장성 : Kubernetes는 수평적 확장을 지원하여, 필요에 따라 애플리케이션의 복제본을 쉽게 추가하거나 제거할 수 있는데요. 이는 트래픽 변화에 유연하게 대응할 수 있게 해줍니다.

    ・자체 복구 : Kubernetes는 장애가 발생한 컨테이너를 자동으로 재시작하거나 교체하여, 애플리케이션의 가용성을 높여 시스템의 안정성을 크게 향상시킵니다.

    ・서비스 발견 및 로드 밸런싱 : Kubernetes는 서비스 간의 통신을 쉽게 설정하고, 로드 밸런싱을 통해 트래픽을 효율적으로 분산시킵니다. 이는 애플리케이션의 성능을 최적화하는 데 도움을 줍니다.

    이 외에도 효율적인 배포 관리, 다양한 환경에서의 유연성 등으로 Kubernetes는 현대 애플리케이션 개발 및 운영에서 필수적인 기술로 자리 잡고 있으며, 많은 기업들이 이를 통해 효율성과 안정성을 높이고 있습니다.

    3) 리눅스

    리눅스는 서버와 클라우드 환경에서 안정성과 유연성을 제공하는 모든 IT 환경에서 가장 많이 사용되는 운영체제입니다. 

    ・오픈 소스 : 리눅스는 오픈 소스 소프트웨어로, 누구나 소스 코드를 수정하고 배포할 수 있습니다. 

    ・ 안정성 : 리눅스는 높은 안정성과 신뢰성을 제공하여 서버 환경에서 많이 사용됩니다.

    ・보안 : 리눅스는 보안 기능이 강력하여, 다양한 보안 도구와 패치가 지속적으로 제공됩니다.

     

    이 외에도 다양한 배포판, 커뮤니티 지원, 다양한 클라우드 플랫폼에서도 리눅스 기반의 인스턴스를 쉽게 사용할 수 있는 등 개인 사용자부터 대규모 기업에 이르기까지 다양한 환경에서 널리 사용되고 있으며, IT 인프라의 중요한 구성 요소로 자리 잡고 있습니다.

    2.  DevOps(데브옵스) 기술 수준별로 어떻게 사용하면 좋을까요?

    입문자-사용자-운영자-관리자별로 학습해야하는 부분이 다른데요. 수준에 따라 어떻게 배우면 좋을까요?

    1단계 클라우드 입문자 : 리눅스 및 클라우드 컴퓨팅의 기초 개념부터 알야아합니다.

    2단계 클라우드 사용자 : AWS를 활용한 클라우드 인프라 설계 및 관리 방법 알아야합니다.

    3단계 클라우드 운영자 : Kubernetes(K8s) 클러스터 관리 및 상세 분석을 알아야합니다.

    4단계 클라우드 관리자 : 실무에서 사용하는 자동화/모니터링 도구로 안정적인 운영 환경을 구축할 줄 알아야합니다. 

    3. 클라우드 운영과 DevOps 어떻게 배워야할까요?

    흔히 많은 입문자들이 리눅스, K8s, aws 다 알아야하는지 고민을 하곤하는데요. 슬프지만 다 공부해야하며, 하나라도 놓치면 경쟁력이 떨어져 불리해지는 경우가 많습니다. 특히 기술 스택 하나만 따로 배우면 실무 환경에서는 활용이 어렵기 때문에 DevOps 전 범위의 40가지 이상 필수 기술스택까지 리눅스, AWS, Kubernetes 3가지 환경 위에서 DevOps의 각 단계별 기술 스택들이 어떻게 동작하는지까지 알아야 합니다.하지만 이 수많은 기술들 언제 하나하나 배우나요? 

    그래서 준비한 [실전 DevOps의 모든 것 : 리눅스부터 GitOps까지]!  이 강의는 aws, Kubernetes, 리눅스를 포함한 DevOps 전 범위의 40가지 이상 필수 기술 스택부터, 최신 클라우드 운영을 3단계 95가지 실습으로 마스터할 수 있도록 핵심만 모은 강의인데요. 그래서 클라우드가 뭔지 감도 안 잡히는 입문자분들부터 커리어 점프를 하고 싶은 클라우드 운영자분들도 모두 만족하실 수 있을 거라 생각됩니다. 더불어 비전공자+백엔드 개발자 출신이였던 카카오뱅크 현직자 두분이 연사님이기에, 데브옵스에서 겪을 고민들을 수강생 입장에서 매우 잘 알려드리니 놓치지 마세요!

     

    자세한 강의 내용 살펴보기

              

  • 거래액 3천억 찍는 무신사 블랙프라이데이, 대규모 트래픽 대비법? feat MSA 아키텍처

    거래액 3천억 찍는 무신사 블랙프라이데이, 대규모 트래픽 대비법? feat MSA 아키텍처

    출처: 무신사 뉴스룸

    패션 플랫폼 무신사가 최초로 활성 기기 1,000만 대를 돌파하며, 2030대에게는 더할 나위 없이 익숙한 패션 플랫폼이 되었습니다. 특히, 무신사의 대표적인 이벤트인 ‘무진장 세일’은 그 규모와 인기로 많은 이들의 주목을 받고 있습니다. 

    실제로 해당 프로모션에서 590만 개의 상품이 판매되었고, 총 누적 판매액이 2,000억 원을 넘었다고 합니다.

    출처: Medium, ‘무진장을 맞아, 후기 응답속도를 개선해보자’

     

    이처럼 초대규모 트래픽이 발생하는 무진장 세일 기간 동안, 무신사는 평소 피크 트래픽의 3배에 달하는 트래픽을 처리해야 합니다. 

     

    이러한 상황에서 과거의 모놀리식 아키텍처는 한계에 부딪혔습니다. 모든 기능이 하나의 애플리케이션으로 통합되어 운영되다 보니, 실시간 트래픽과 데이터를 효과적으로 처리하는 데 어려움이 있었습니다. 세일 기간 동안 수많은 상품이 동시에 할인되고 특별 혜택이 제공되기 때문에, 실시간으로 대응하는 것이 쉽지 않았습니다.

     

    이에 무신사는 기존 레거시 시스템의 단점을 파악하고, MSA(마이크로서비스 아키텍처)로의 전환을 결심했습니다. MSA는 어플리케이션을 독립적인 작은 서비스로 나누어 개발, 배포 및 운영하는 방식으로, 대규모 트래픽과 데이터를 효율적으로 처리할 수 있는 해결방안이었습니다.

     

    이러한 MSA 전환을 통해 무신사는 대규모 트래픽을 효과적으로 커버할 수 있는 시스템 설계를 갖추게 되었습니다. 각 서비스가 독립적으로 운영되므로, 특정 기능에 대한 트래픽 증가가 전체 시스템에 미치는 영향을 최소화할 수 있었습니다. 이는 업무 효율성을 높이는 데도 큰 도움이 되었습니다. 예를 들어, 특정 카테고리의 상품이 인기를 끌 때, 그 서비스만 확장하여 대응할 수 있는 유연성을 확보한 것입니다.

    무신사는 이러한 MSA 마이그레이션 외에도 다양한 대규모 트래픽 처리 전략을 마련하고 있습니다.

    어떻게 프로모션 대규모 트래픽에 대비하는지 3가지 주요 세일 기능으로 알아봐요 🙂

    첫 번째로는 바로 쿠폰 발급 서비스입니다. 세일 기간동안 백만 건이 넘는 쿠폰 발행이 발생하기 때문에 동시성을 처리하고 사용 상태를 비동기로 처리해 실시간 쿠폰 상태를 관리해야 합니다.

     

     

    [요구 사항]

    · Coupon Generation: 대규모 쿠폰을 생성하여 Redis에 저장합니다.

    · Coupon Distribution: 사용자에게 쿠폰을 배포하며, Redis에서 실시간으로 쿠폰 상태를 관리합니다.

     

    # 동시성 문제를 해결하기 위해 스레드, 락, 세마포어 등 다양한 동기화 메커니즘 적용합니다.

     

     

     

    두 번째로는 적립금 적립/조회/소멸 시스템입니다. 수많은 구매가 동시에 발생하기 때문에 캐싱 갱신 전략과 Spring 백엔드에서의 동시성 처리로 실시간으로 관리 서비스를 관리할 수 있도록 합니다.

    [요구 사항]

    · Coupon Generation: 대규모 쿠폰을 생성하여 Redis에 저장합니다.

    · Coupon Distribution: 사용자에게 쿠폰을 배포하며, Redis에서 실시간으로 쿠폰 상태를 관리합니다.

     

    # 동시성 문제를 해결하기 위해 스레드, 락, 세마포어 등 다양한 동기화 메커니즘 적용합니다.

     

     

    마지막으로는 대규모 타임 세일 시스템과 재고 관리입니다. 타임딜과 같은 이벤트를 계속해 진행하기 때문에 타임 세일 상품의 등록, 관리, 그리고 사용자가 타임 세일에 참여하는 요청을 실시간으로 처리해야 합니다. 대규모 트래픽하면 빠질 수 없는 Redis와 Kafka를 활용해 비동기 개념을 적용시킵니다.

    [요구 사항]

    · Sale Management: 타임 세일 상품의 등록과 시간을 설정하며, 
Redis를 통해 재고를 관리합니다.

    · Sale Participation: 사용자가 타임 세일에 참여하는 요청을 처리합니다.

     

    # Redis, Kafka를 함께 사용하여 실시간으로 변경되는 데이터를 알맞게 처리합니다. 

     

     

     

    이런 MSA 기반 기능들을 구현함으로써 대규모 트래픽과 데이터에 대처하고 있으며 고성능 보장을 위한 장애 대응 훈련까지 진행하고 있습니다. 

    사실 실전 대규모 트래픽을 잘 다루기 위해서 단순 기술이나 스택만으로는 부족합니다. 애초에 아키텍처를 잘 설계해야 대규모 트래픽을 견딜 수 있는 기능 구현이 가능해집니다.

    이런 단편적인 스택만 다루는 강의 말고 MSA 기반의 대규모 아키텍처 설계부터 기능 구현, 모니터링 시스템 구축까지 실전 대규모 트래픽을 배울 수 있는 강의가 나왔어요!

     

     

    1️⃣ 대규모 트래픽 필수 개념 학습

    2️⃣ 안정성 있는 대규모 아키텍처 설계

    3️⃣ 프르모션 대표 3가지 기능 구현

    4️⃣ 모니터링 시스템 & API Gateway 개발

     

    강의보러 가기  ▶ https://bit.ly/3ZHy2yv

  • 자바공화국에서, 그럼에도 불구하고 NestJS 대세감이 높아지는 이유

    자바공화국에서, 그럼에도 불구하고 NestJS 대세감이 높아지는 이유


    (출처 ㅡ 매일경제 “오픈서베이 개발자 트렌드리포트 2021“)


    최근 몇 년 간, Java는 백엔드 개발의 대표 주자로 군림해왔습니다. 


    자바의 안정성과 풍부한 생태계 덕분에 많은 기업들이 자바 기반의 솔루션을 채택해왔죠. 


    그럼에도 불구하고, 현대의 개발 트렌드가 변화하면서 MSA(마이크로서비스 아키텍처)의 확산에 따라 NestJS가 점점 더 많은 주목을 받고 있습니다.  



    | NestJS

    NestJS는 효율적이고 확장 가능한 Node.js 서버 측 응용 프로그램을 구축하기 위한 백엔드 프레임워크로, TypeScript를 기반으로 설계되었습니다. 

     

    Angular의 아키텍처와 디자인 패턴에서 영향을 받아 모듈화된 구조를 갖추고 있으며, 데코레이터와 의존성 주입(Dependency Injection) 등의 기능을 제공하죠. 

     

    NestJS는 서버 사이드 애플리케이션을 구축하기 위한 강력한 도구로, 모던 웹 애플리케이션 개발의 요구를 충족시키는 데 중점을 두고 있습니다.

    | Java vs NestJS

     

    (출처 ㅡ Consolblog “NestJS for SpringBoot developers“)



    Java와 NestJS를 비교하면 다음과 같습니다.

    –  개발 속도와 생산성

    Java는 안정성과 성숙도를 자랑하지만, 상대적으로 긴 개발 사이클을 가질 수 있습니다. Java 기반의 백엔드 프레임워크들(Spring Boot 등)은 많은 설정과 보일러플레이트 코드가 필요해 개발 속도가 느릴 수 있죠. 또한, Java의 강력한 타입 시스템과 설정 파일들은 복잡한 설정을 요구할 수 있습니다. 

    하지만, NestJS는 TypeScript를 기본으로, 모듈화된 아키텍처를 채택하여 빠른 개발 속도를 지원합니다. 또한 NestJS는 기본적으로 Angular에서 영감을 받은 구조를 갖추고 있어, 개발자들이 익숙한 패턴을 빠르게 적용할 수 있습니다.

     

    –  비동기 처리 및 성능

    Java는 전통적으로 동기적인 I/O 처리를 지원하며, 비동기 처리를 위해서는 별도의 라이브러리나 프레임워크가 필요합니다. 때문에 Java 기반의 웹 서버는 상대적으로 많은 리소스를 소모할 수 있죠. 

    하지만, NestJS는 Node.js 백엔드 기반으로 비동기 I/O 처리에 최적화되어 있습니다. Node.js의 비동기 모델은 높은 성능과 효율적인 리소스 사용을 가능하게 하며, 실시간 데이터 처리와 대규모 트래픽을 효율적으로 관리할 수 있습니다. 

     

    –  유연성과 확장성

    Java는 Spring Framework를 통해 모듈화된 아키텍처를 지원하지만, 설정과 구조가 복잡할 수 있습니다. 대규모 애플리케이션에서의 확장성과 유연성은 가능하지만, 추가적인 설정과 관리가 필요하죠. 

    반면, 백엔드 NestJS는 모듈화된 아키텍처를 제공하여, 애플리케이션을 독립적인 모듈로 나누어 개발할 수 있습니다. 이는 기능별로 독립적인 개발과 배포가 가능하게 해주며, 대규모 애플리케이션의 확장성과 유연성을 높입니다. 또한, NestJS는 마이크로서비스 아키텍처를 자연스럽게 지원하여, 서비스 간의 독립성과 효율적인 확장을 지원합니다.

     

    –  개발자 경험과 생산성 도구

    Java는 강력한 개발 도구와 생태계를 제공하지만, 설정과 코드 작성 시에 상대적으로 많은 보일러플레이트 코드와 복잡한 설정이 필요합니다.

     

    반면, NestJS는 TypeScript와 함께 제공되며, 타입 정보와 자동 완성 기능을 통해 백엔드 개발자 경험을 개선합니다. 이는 IDE에서의 코드 작성과 디버깅을 보다 편리하게 만들어 줍니다. 또한, NestJS는 Swagger와 같은 도구를 통해 자동으로 API 문서를 생성할 수 있어, API 문서화와 테스트를 쉽게 수행할 수 있습니다.

     

    | IT 기업들의 NestJS 사용 증가

     

    (출처 ㅡ Business Post “[비즈니스피플 인재탐구] ‘네카라쿠배당토’는 왜 꿈의 직장이 됐나“)



    IT 산업의 빠른 변화와 발전에 따라 백엔드 개발 기술도 지속적으로 진화하고 있습니다. 

    전통적으로 자바, C#과 같은 성숙한 언어와 프레임워크들이 주를 이루던 시절을 지나, 

    Node.js 기반의 프레임워크들이 그 위상을 높여가고 있죠. 

    그 중에서도 NestJS는 특히 주목받고 있는 백엔드 프레임워크로, 많은 IT 기업들이 이를 채택하고 있습니다.



    실제 NestJS 백엔드 개발자 채용공고를 보면 다음과 같습니다. 

     

    Java 중심의 백엔드 개발 환경에서도 NestJS가 대세로 떠오르는 이유가 무엇일까요?

    | MSA 환경에 가장 유리한 프레임워크, NestJS



     

    기술의 발전과 비즈니스 환경의 변화에 따라, IT 기업들은 점점 더 복잡하고 대규모의 애플리케이션을 효율적으로 관리할 필요성이 커지고 있는데요.

     

    이러한 요구를 충족하기 위해 많은 기업들이 복잡한 애플리케이션을 독립적이고 자율적인 서비스로 나누어 관리하는 마이크로서비스 아키텍처(MSA)를 적용하고 있습니다.

     

    MSA의 접근 방식은 유연성, 확장성, 독립적 배포 등의 이점을 제공하지만, 여러 서비스 간의 협력과 통합을 잘 지원하는 프레임워크가 필요합니다.

     

    그 중에서 NestJS가 MSA 환경에서 특히 유리한 백엔드 프레임워크로 평가받고 있는데요,

      •  

    1. 모듈러 아키텍처

    NestJS는 애플리케이션을 더 작은 모듈로 나눌 수 있는 모듈식 아키텍처를 따릅니다. 각 모듈에는 쉽게 재사용할 수 있는 자체 컨트롤러, 공급자 및 서비스 세트가 있으며, 이는 복잡한 애플리케이션을 더 쉽게 관리하고 코드의 유지보수를 용이하게 합니다.

    2. 내장된 마이크로서비스 지원

    NestJS는 기본적으로 여러 마이크로서비스 패턴을 지원하고, 메시지 브로커 (RabbitMQ, Kafka 등)와 같은 다양한 통신 방식도 쉽게 구현할 수 있습니다.

    3. 데코레이터와 DI (의존성 주입)

    NestJS는 데코레이터 패턴과 의존성 주입을 사용하여 코드의 가독성과 관리성을 높입니다. MSA에서는 서비스 간의 의존성이 복잡해질 수 있는데, DI를 통해 이를 효과적으로 관리할 수 있습니다.

    4. 성능과 확장성

    NestJS는 Node.js의 비동기 이벤트 드리븐 아키텍처를 기반으로 하여 높은 성능과 확장성을 제공합니다. 이는 많은 요청을 처리해야 하는 MSA 환경에서 중요한 요소입니다.

    이렇게 NestJS는 백엔드 개발자들과 기업들에게 있어서 생산성, 테스킹 및 디버깅 측면에서 많은 이점을 제공하며, 오픈소스 프레임워크로서 포괄적인 도구와 플러그인 생태계를 지원합니다.

    | MSA 기반 NestJS 배우고 싶다면

     

    그런데, 아직까지는 국내에서 MSA 기반 NestJS 백엔드를 제대로 배울 수 있는 곳이 없는데요.

     

    국내 최초로 패스트캠퍼스의 [AI 시대 일잘러를 위한 비현실적인 400가지 ChatGPT 활용 바이블] 강의에서 MSA 적용 및 대규모 애플리케이션 운영까지 배워볼 수 있다고 합니다. 

     

     

    300명 이상의 현직자가 설문을 통해 직접 선정한 ‘백엔드 개발자가 가장 학습하고 싶은 2개의 프로젝트’인 스트리밍과 배달 프로젝트를 통해 인증, 실시간 채팅, 캐싱, 테스크 스케쥴링과 테스트 및 배포 등 NestJS Core를 완벽하게 정복하고 Monorepo 환경부터 DDD 기반 Polyrepo 환경의 MSA 전환까지 완벽히 정복 가능하다는데요.

     

    프로그래밍 일타 강사의 실시간 질의응답부터 온라인 멘토링, 모각코를 통해 실습 중 궁금한 사항을 해결하고 커리어 고민까지 받아볼 수 있다고 하니 놓치지 마세요!

     

    국내에서는 유일한 MSA 기반 NestJS 백엔드를 다루는 강의! 

    두가지 프로젝트를 통해 NestJS 기초부터 MSA 운영법까지 

    이 강의에서 모두 알려드릴테니 확인해보세요!

     

    https://fastcampus.co.kr/dev_online_nestjs

  • 국내 1티어급 이커머스 플랫폼으로 배우는 대용량 데이터 처리 끝판왕

    국내 1티어급 이커머스 플랫폼으로 배우는 대용량 데이터 처리 끝판왕

    #대용량 데이터

    #이커머스 플랫폼

    #데이터 처리

    이커머스 플랫폼, 특히 지마켓과 같은 대규모 데이터 플랫폼은 방대한 데이터를 실시간으로 처리해야 합니다. 그래서 단순한 기능을 구현할 줄 알고 한 가지 데이터 처리 방식만 알아서는 쏟아지는 데이터를 처리하기가 어렵습니다. 데이터 종류나 상황에 따라 다양한 데이터 처리 방식과 기술 스택을 선택할 줄 알아야만 대용량 데이터를 실시간으로 처리할 수 있습니다.

    실제 이커머스 플랫폼의 테크 리드에 따르면, 1TB급 대용량 데이터를 다루면서 다양한 데이터 처리 방식을 사용하고 여러 기능을 구현하고 있다고 합니다.

    그렇다면 대용량 데이터가 흐르는 이커머스 플랫폼에서는 어떤 기능을 구현하고, 어떻게 대용량 데이터 처리를 진행하는지 한 번 알아볼까요?

    <쿠* 급 이커머스 플랫폼 구현 과정>

     

    아래 아키텍처는 실제 국내 1위 이커머스 플랫폼인 쿠*급의 대용량 데이터가 흐르는 과정을 볼 수 있어요!

    이 흐름을 통해 이커머스 플랫폼 내의 주요 기능이 어떻게 구현되는지 함께 이해해봐요🙌

    1. 실시간 가격 조정 기능

    저희가 자주 사용하는 이커머스 플랫폼에서 위의 가격창을 볼 수 있죠? 이 가격창은 고정된 값이 아니라 판매나 재고 상황에 따라 가격이 계속 업데이트됩니다. 어떤 기능을 구현하고 데이터를 활용하는지 정리해봤어요.

    ✔ 구현 기능

    • 상품 판매 데이터를 활용한 실시간 가격 조정 알고리즘

    • 실시간 구매와 재고 수준을 Stream 형태로 받아 연산 처리 

     

    ✔ 주요 데이터 소스 

    • 실시간 구매 이벤트 (구매 수량, 시간 등)

    • 재고 수준

     

    ✔ 사용 기술

    • Apache Kafka: 실시간 구매 & 재고 스트림을 수집.

    • Apache Flink: 실시간 데이터 처리 및 가격 조정 알고리즘 실행.

    • Redis: 실시간 재고 수준 캐싱 및 빠른 데이터 접근.

    2. 결제 & 구매 기능

     

    고객이 상품을 구매하기 위해선 구매 기능이 있어야하겠죠? 또, 실시간으로 주문이 발생하기 때문에 실시간 주문, 결제, 재고에 따른 업데이트도 진행하고 있습니다.

    ✔ 구현 기능

    • 상품 데이터와 백엔드 API를 활용한 실시간 주문, 결제, 재고 업데이트 기능

    • 주문 생성 및 관리

    • 결제 처리

    • 재고 업데이트 

     

    ✔ 주요 데이터 소스 

    • 실시간 구매 이벤트

    • 상품 데이터와 백엔드 API 요청

     

    ✔ 사용 기술

    • Apache Kafka: 실시간 데이터 스트림 플랫폼

    3. 재고 관리 기능

    주문에 따라 재고 상황이 변하기 때문에, 재고도 계속 업데이트하며 고객분들께 현재 재고 상황을 알릴 필요가 있습니다.

    ✔ 구현 기능

    • 재고 관련 API와 상호작용하며 데이터를 캐싱하고 업데이트함.

    • 상품이 주문될 때마다 재고 수준을 확인.

    • 주문이 완료되면 재고 수준을 감소시키고, Redis에 업데이트.

    • 재고 수준이 임계값 이하로 떨어지면 알림을 생성.

     

    ✔ 처리하는 데이터 종류

    • 실시간 구매 이벤트 (구매 수량)

    • 재고 데이터 

     

    ✔ 사용 기술

    • Redis: 재고 데이터 캐싱 및 업데이트 

    4. 발주 현황 관리

    고객에게 상품 발송을 위해서 위 재고와 상호작용하며 신규 발주도 업데이트 해야겠죠?

    ✔ 구현 기능

    • 재고 관련 API와 상호작용하며 실시간으로 신규 발주 현황을 관리함.

    • 재고 업데이트 이벤트 발생 시 발주 여부 확인

    • 발주 필요시 발주 요청 이벤트 생성 

     

    ✔ 처리하는 데이터 종류

    • 상품 데이터와 백엔드 API 요청

    • 재고 데이터

    • 발주 관련 API 

     

    ✔ 사용 기술

    • Apache Kafka: 발주 요청 및 상태 업데이트 처리

    • Redis: 발주 데이터를 캐싱하고, 상태 데이터 조회&업데이트

    이 기능들이 없다면 고객이 상품을 구매하고 받아볼 수 없겠죠? 구매가 일어나는 데이터 플랫폼에서는 꼭 필요한 주요 기능들입니다. 다음으로 알아볼 기능은 고객에게 더 나은 이커머스 플랫폼을 제공하기 위해 내부적으로 구현되는 기능들입니다.

    5. 판매 리포트

    이커머스 플랫폼 내부에서는 이 대용량 데이터가 흐르는 현황을 파악하기 위해 판매 리포트를 생성해서 확인하고 있습니다. 

    ✔ 구현 기능

    • 상품 판매 데이터를 활용한 상품 판매 리포트

    • 필요한 판매 관련 데이터를 추출 및 변환하고, 필요한 계산을 수행.

    • 정기적인 배치 작업으로 매출 리포트를 생성.

     

    ✔ 처리하는 데이터 종류

    • 판매 이력 데이터

     

    ✔ 사용 기술

    • Apache Spark: 배치 처리를 위한 분산처리 엔진

    • Apache Airflow: 정기적인 처리를 위한 워크플로우 관리

    6. 상품평 긍정/부정 분석 기능 

    이커머스 플랫폼에서는 여러 고객들이 상품평을 남기곤 합니다. 고객의 만족도를 확인하기 위해, 상품 구매 후기를 기반으로 만족도를 분석하고 있습니다.

    ✔ 구현 기능

    • 상품 구매 후기 데이터를 활용한 상품 만족도 분석 기능

    • 상품평 데이터를 벡터링하여 저장

    • Full-Text 검색 및 집계 기능을 활용하여 긍정/부정 분석 진행 

     

    ✔ 처리하는 데이터 종류

    • 상품 구매 후기 데이터 

     

    ✔ 사용 기술

    • Elasticsearch: 대규모 텍스트 데이터를 저장하고 검색하는 분산 검색 엔진

    이렇게 대용량 데이터 처리가 가능한 이커머스 플랫폼을 위한 구현 기능과 사용 기술들을 알아봤습니다. 1TB급의 대용량 데이터 처리 경험을 쌓을 수 있는 곳은 많지 않아, 어떻게 처리 경험을 쌓아야 할지 고민이 많으실 텐데요.

     

    그래서 이번에 주요 기능을 모두 구현하고 1TB급의 대용량 데이터 처리를 진행하는 쿠* 프로젝트 강의가 나왔습니다!
    실시간 및 대용량 데이터 처리에 필요한 필수 스택과 데이터 처리 방식을 한 번에 학습할 수 있어요🔥

     

    강의 바로가기
  • 백엔드 개발자가 Spring Boot 사용하며 겪는 흔한 문제 모음.zip

    백엔드 개발자가 Spring Boot 사용하며 겪는 흔한 문제 모음.zip

    백엔드 개발자가 Spring Boot 사용하며 겪는 흔한 문제 모음.zip

    #Spring Boot

    #백엔드

    #Spring

     

    1. 기본기가 없는 백엔드 개발자가 Spring Boot를 사용할때 생기는 문제점

    기본기가 없는 백엔드 개발자가 Spring Boot를 사용하면 다양한 문제가 생기는데요! 어떤 것이 있는지 살펴볼까요?

     

     

    1. 프로젝트 구조 이해 부족 : Spring Boot 프로젝트의 디렉토리 구조와 파일들의 역할을 이해하지 못해 코드가 복잡해질 수 있습니다.

    2. 의존성 관리 문제 : Maven이나 Gradle을 통한 의존성 관리를 이해하지 못하면 필요한 라이브러리를 제대로 추가하거나 관리하지 못할 수 있습니다.

    3. Bean 관리 및 의존성 주입(DI) 이해 부족 : Spring의 핵심 개념인 DI와 IoC 컨테이너를 이해하지 못하면 Bean의 생명주기나 올바른 객체 주입에 문제가 생길 수 있습니다.

    4. 설정 파일 관리 어려움 : application.properties나 application.yml 파일을 통해 설정을 관리하지 못하고, 하드코딩을 남발할 수 있습니다.

    5. RESTful API 설계 및 구현 문제 : RESTful API의 기본 원칙을 이해하지 못해 비효율적이거나 일관성 없는 API를 설계할 수 있습니다.

    6. 데이터베이스 연동 문제 : spring boot 사용시 JPA/Hibernate와 같은 ORM 도구를 제대로 이해하지 못해 비효율적인 쿼리나 데이터베이스 성능 저하를 초래할 수 있습니다.

    7. 보안 문제 : 백엔드에 Spring Security를 활용한 인증 및 권한 관리를 제대로 구현하지 못해 보안 취약점을 남길 수 있습니다.

    이것 말고도 기본기를 탄탄히 다지지 않으면 문제들이 발생합니다. 

    2. 실제 백엔드 개발자가 spring boot 구현하면서 어떤 어려움을 겪을지 & 답변까지 모아옴!


    Q. Spring Boot에서 application.properties 및 application.yml 파일의 역할과 사용을 모르겠어요 ㅜㅜ

    A. Spring Boot에서 application.properties 및 application.yml 파일은 애플리케이션을 구성하는 데 필수적입니다. 좀더 세부적으로 설명드리면 두 파일 모두 서버 포트, 데이터베이스 연결, 로깅 수준 등과 같은 다양한 Spring Boot 기능에 대한 설정을 정의할 수 있습니다.

    사용형식은 아래와 같습니다.

     

    – application.properties는 간단한 키-값 쌍 형식을 사용합니다.

    – application.yml은 더 읽기 쉽고 계층적 데이터 구조를 지원하는 YAML(YAML Ain’t Markup Language)을 사용합니다.

     

    ex) properties 파일 사용 예

    server.port=8080

    spring.datasource.url=jdbc:mysql://localhost:3306/mydb

    spring.datasource.username=root

    spring.datasource.password=secret

    logging.level.org.springframework=DEBUG

     

    ex) yaml 파일 사용 예

    server:

     port: 8080

    spring:

     datasource:

      url: jdbc:mysql://localhost:3306/mydb

      username: root

      password: secret

    logging:

     level:

     

      org.springframework: DEBUG

    장점을 비교하면!

    – 가독성: YAML 파일은 일반적으로 읽기가 더 쉽고 복잡한 구성에 더 적합합니다.
    – 단순성: 속성 파일은 더 간단하며 간단한 키-값 구성에 널리 사용됩니다.

    Q. spring boot에서 데이터 교환을 위한 데이터 형식으로 XML과 JSON의 차이점을 모르겠어요!

    A. XML(eXtensible Markup Language)과 JSON(JavaScript Object Notation)은 시스템 간 데이터 교환에 널리 사용되는 두 가지 데이터 형식입니다.

    – XML 문서는 각 요소가 태그로 묶인 요소 트리로 구성됩니다.

    – JSON은 데이터를 이름/값 쌍(종종 객체라고도 함)의 컬렉션과 순서가 지정된 값 목록(배열)으로 구성합니다.

    예를 들어 사람(person=객체)의 정보를

    – XML 데이터 구조로 표현하면 아래 와 같습니다.

    <person>

     <name>John Doe</name>

     <age>30</age>

     <address>

      <street>Main Street</street>

      <city>Springfield</city>

     </address>

    </person>

    – JSON 데이터 구조로 표현하면 아래 와 같습니다.

    {

     “name”: “John Doe”,

     “age”: 30,

     “address”: {

      “street”: “Main Street”,

      “city”: “Springfield”

     }

    }

    XML은 문서 중심 데이터와 복잡한 계층 구조에 강력한 반면,

    JSON은 특히 웹 및 모바일 애플리케이션에서 경량 데이터 교환에 적합합니다.

    Q. Spring Boot에서 JPA를 사용했는데, N+1 문제가 발생했어요! 

    A. N+1 문제에는 여러방법을 시도해봐야합니다.

    첫번째, @EntityGraph 어노테이션을 사용해 필요한 연관관계를 미리 로드해보세요. 지연 로딩(LAZY)으로 인한 N+1 문제를 해결할 수 있을 겁니다. 

    두번째, JPA의 Fetch 전략을 LAZY에서 EAGER로 변경하면 
연관 엔티티를 즉시 로드할 수 있어요. 필요한 데이터를 한번에  가져올 수 있어,  N+1 문제가 해결될거에요. 

    세번째, QueryDSL 라이브러리를 사용하여 복잡한 쿼리를 작성해보세요. 데이터만 선별적으로 로드할 수 있을거에요. 

    네번째, Spring Data Projections 기능을 활용하여 필요한 데이터만 선택적으로 로드해, 불필요한 데이터 로드를 방지해보세요.

     

    다섯번째, 애플리케이션의 성능을 모니터링하여 N+1 문제가 발생하는 지점을 찾아내 지속적인 성능 최적화 수행해보세요!

    3. 백엔드 개발자가 spring boot 구현하며 발생하는 문제 & 해결방법, 하나하나 검색해 찾기 힘들다면?

     

    사실 앞선 답변은 모두 백엔드 도사 박매일님이 답변해주신건데요! 1만 spring boot 포기자들을 가르치며 만드신 TPC활용법으로 뇌에 저절로 새겨지도록 알려주시는 것으로 유명하시죠! 백엔드 도사 박매일 강사님의 spring boot 시각자료 또한 보기만 해도 저절로 구조가 보일 만큼 완벽한데요! 이런 화려한 자료뿐만 아니라, 수강평 + 친절함까지 만점이신 강사님입니다. 백엔드 개발자분들! spring boot 구현에 한번이라도 어려움을 겪으셨다면? 이 강의로 모조리 해결해보세요! 

    ▼ 뇌에 새겨지는 Spring Boot 강의 바로가기 ▼

  • 백엔드 개발한다면 꼭 알아야 할 실시간 & 대용량 데이터 처리의 해답 : Kafka(카프카)

    백엔드 개발한다면 꼭 알아야 할 실시간 & 대용량 데이터 처리의 해답 : Kafka(카프카)

    백엔드 개발한다면 꼭 알아야 할 실시간 & 대용량 데이터 처리의 해답 : Kafka(카프카)

    #Kafka

    #대용량 데이터

    #백엔드 개발

    빅테크 기업을 중심으로 백엔드 개발 채용공고에서 Kafka 활용능력이 눈에 띄게 급부상하고 있습니다. 이제는 백엔드 개발자들도 Kafka를 경험해야하는 시대가 온것인데요.  Kafka, 어떤 장점때문에 주목을 받고 있는지 더불어 백엔드개발자들이 어떻게 활용해야하는지 알려드리겠습니다.

    1. 요즘 빅테크 기업 채용에 많이 보이는 카프카가 주목받는 이유

    1) Kafka(카프카)란?

    Kafka(카프카)는 실시간으로 스트리밍 데이터를 수집하고 처리하는 데 최적화된 분산 메시징 시스템입니다. 수천 개의 대용량 데이터 원본에서 연속적으로 생성되는 데이터로, 보통 데이터 레코드를 동시에 전송합니다. 실시간으로 대용량 데이터를 전송해야하는 플랫폼은 이러한 지속적인 데용량 데이터 유입을 처리하고 데이터를 순차적이고 점진적으로 처리해야 하기에 Kafka(카프카)를 사용하면 효율적으로 처리가 가능합니다.

    2) Kafka(카프카)는 주로 어디에 사용될까요?

    Kafka는 실시간 스트리밍 데이터 파이프라인과 실시간 스트리밍 애플리케이션을 구축하는 데 사용됩니다. 데이터 파이프라인은 데이터를 안정적으로 처리하고 한 시스템에서 다른 시스템으로 이동하며, 실시간 애플리케이션은 데이터 스트림을 소비하게 합니다. 

    2. 백엔드 개발자가 카프카를 왜 배워야할까요?

    1) 백엔드 개발자가 Kafka(카프카) 사용할때의 이점

    ① 고성능 데이터 처리: Kafka는 고속으로 데이터를 처리하고 전송할 수 있어, 대용량 데이터 스트림을 실시간으로 처리하는 데 유리합니다. 

    ② 확장성: Kafka는 분산 아키텍처를 기반으로 설계되어 있어, 필요에 따라 시스템을 쉽게 확장할 수 있습니다. 데이터의 양이 증가해도 큰 성능 저하없이 대용량 데이터를 처리할 수 있수 있게 도와줍니다.

    ③ 데이터 파이프라인 구축: Kafka는 다양한 소스로부터 데이터를 수집하고, 이를 다양한 목적지(데이터베이스, 캐시 시스템, 검색 엔진 등)로 전송할 수 있게 도와줍니다. 

    ④ 내결함성과 데이터 복구: Kafka는 데이터의 복제를 지원하여, 시스템 장애가 발생해도 대용량 데이터 손실 없이 복구할 수 있는 내결함성을 제공합니다. 

    2) Kafka(카프카)의 유연한 연결성

    Kafka(카프카)는 특히 유연한 연결성이 강점인데요. 다양한 케이스별로 적절하게 외부툴과 연결하여 사용할 수 있어 백엔드 개발에 유용합니다.

    ① 대량의 트래픽(대용량 데이터)가 몰리는 상황 : DB 분산 (+MySQL, redis)

    순간적으로 대량의 트래픽(대용량 데이터)가 몰릴때에는  사용자들에게 빠르게 서빙 되어야 하는 데이터는 빠른 속도의 Redis로, 순차적으로 처리 해도 되는 데이터는 MySQL단에서 처리할 수 있도록 Kafka를 활용할 수 있습니다. 

     

     

    ② 로그 수집 시 파이프라인이 많은 양을 빠르게 받아들일 때 데 : 로그 적재 (+beats, Logstash, elasticsearch)

    로그 수집 시 파이프라인이 많은 양을 빠르게 받아들일 때 데이터가 일부 유실되는 문제가 생길 수 있습니다. 로그 수집 파이프라인에 높은 신뢰성(고가용성)과 실시간성을 더할 수 있도록 Kafka를 메시징큐로 활용하여 로그를 적재해 해결합니다. 

    ③ 대용량 데이터 분산 및 처리를 위한 Kafka 활용 :  애플리케이션 연결 (+ChatGPT, MySQL, redis, mongoDB, elasticsearch)

    Kafka(카프카)를 이용하면 Event Driven Architecture 형태로 콘텐츠 플랫폼 설계 및 구축을 할 수 있습니다. 데이터 저장, 구독, 캐싱, 색인 그리고 외부 API(ChatGPT) 연동까지 자연스럽게 흐르는 데이터 흐름을 설계하고, 각 요구사항에 따른 애플리케이션을 구축해나가며 Event Driven Architecture기반의 거대한 플랫폼을 완성시킬 수 있습니다. 

    3) 백엔드 개발자가 실무에서 Kafka 활용할 때 가장 중요한 Producer/Consumer 심화활용법

    실무적인 능력을 키우기 위해 Kafka 메시지를 자유자재로 다루어보는 심화 활용법까지 다뤄봐야합니다.

    ① Producer를 활용한 Application 단에서 데이터 자동 이관/복제

    한번만 만들어두면, 손쉽게 데이터의 변경사항(C/U/D)을 Kafka로 연동할 수 있습니다. Kafka Connect를 활용한 CDC 등 더 어려운 방법 없이도 간단히 메시지 발행을 자동화가 가능합니다.

    ② 까다로운 Consumer 활용

    보통 실무에서는 Producer보단 Consumer를 다루면서 Exception을 자주 만나게 됩니다. 이때 주로 일어나는 트러블이 3가지가 있는데, 아래의 방법으로 해결할 수 있습니다.

    -대비 방안 1 -Retry : Retryable Exception의 경우 Retry로 해결

    -대비 방안 2-ErrorHandler : Unretryable Exception의 경우 ErrorHandler를 통해 해결

    -대비 방안 3-DLT (Dead Letter Topic) : 컨슈머가 소화하지 못한 메세지의 경우 DLT으로 해결

    3. 백엔드 개발에 이렇게나 중요하고 효율적인 Kafka(카프카) 제대로 배우는 학습법

    앞서 말한 백엔드 개발에 필요한 Kafka(카프카) 활용법들 빠르고 제대로 배운다면 커리어를 더욱 높일 수 있겠죠? 

    그래서 준비한 [백엔드 개발자를 위한 Kafka 실습 0 to 1 : 입문부터 EDA까지] 강의! 

     

    ▼ 백엔드 개발자를 위한 Kafka 실습 0 to 1 : 입문부터 EDA까지 강의 바로가기 ▼

     

     

    이 강의 하나면 Spring Boot에 Kafka 연결조차 어려웠던 백엔드 개발자도 EDA 기반의 플랫폼 구축까지 가능! Kafka 마스터 하게 해드리기 위해 1) Kafka 개발환경 세팅부터 차근차근 2) 대용량 데이터를 처리하기위한  실무 수준의 Kafka 활용법을 3가지 프로젝트로 3)  Producer / Consumer 심화 활용법까지 3단계 커리큘럼으로 구성했습니다! 강사님도 네*버 쇼핑, 당* 등 국내 최대 트레픽 규모의 서비스를 만들며, 대용량 데이터를 안정적으로 다루기 위해 Kafka를 실무 최전선에서 사용하시고 계신 분이니 백엔드 개발 노하우까지 가득 챙겨가세요!

끝없이 이어질 인공지능의 이야기
AI:ing에서 당신의 커리어 성장이 시작됩니다.

ALL

IT

AI:ING only

AI Double UP

AI 자격증(AICA)

이벤트