HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/강의 내용 정리/
🏯
프로그래머스 백엔드 데브코스
/
[3/24] Modern Architecture

[3/24] Modern Architecture

쏘카 개발 팀장 지두현님
  • Modern = 활용할 수 있는
 

개발자로서 성장하기 위해서는

  • endpoint 설계를 더 잘 집중해라. MSA에 대한 공부보다는
  • 특히 주니어의 경우에는. 성장하려고 하는 의지, 배우려고 하는 의지. 클린 코드를 짜고 싶은, 관리 가능한 코드를 짜려고 노력하는 개발자

Architect

  • Fundamental knowledges
  • Proficient programming languages(2~3가지 프로그래밍 언어 알고)
  • Software engineer as a developer
  • Manageable coding capabilities
  • Leadership and coaching
  • Infrastructure knowledge and understanding
  • Experiences in developing/releasing/managing production softwares for more than 7 ~ 10 years
주어진 환경에서 가장 좋은 소프트웨어를 만들기 위해서 잘 어우러지도록 하는 일을 함

Modern Architecture

  • Standalone - 컴퓨터의 힘 만으로
  • Distributed over network - 나누어진 컴퓨팅 자원을 이용해서 수행을 하는 것
  • Monolithic
  • Microservices(MSA) - Monolithic을 쪼개어서 나누어서 사용하는 것
  • Event-driven(EDA) - Event 중심, Data 중심

무엇이 아키텍처의 변화를 이끄는가?

Needs

  • Required resources and capacities
  • Scale and stability
  • Role and responsibility
  • Autonomy

ENVs

  • 향상된 컴퓨팅 파워
    • unix, pc, linux, and intel
  • Network
    • UDP/TCP
  • Internet → HTTP
  • Machine friendly protocols
    • SOAP (XML 기반)
    • RESTful
 
  • R&R을 나누고
  • 서비스를 맡아서 개발을 진행하게 됨으로써 → MSA 대두됨
  • 분산된 환경이다 보니 어느 쪽에서 변경이 되어서 문제가 생길 수 있음
notion image
  • ⇒ EDA 대두. 다른 것 신경 쓸 필요 없이 데이터만 신경 씀. 서로가 서로를 알 필요 없이 데이터만 보면 됨

List of Available Architectures

  • Monolithic
  • MSA
  • EDA
  • Serverless

MSA

notion image
  • Decentralized Governance : 각각의 서비스들은 각각의 지배만 함. 하나의 서비스는 노드로, 다른 건 자바로, 다른건 go로...
  • Decentralized Data : db 는 각각의 서비스 별로
  • Infrastructrue Automation : 인프라 자동화
  • Design for failure : 여러 프로덕트를 한번에 transaction 할 수가 없어서, 끝에 하나 실패하면 앞에 두 개는 변경사항이 반영된다... 이러한 실패에 대한 방지책이 있어야 함
⇒ 자유도가 높아짐.
  • 그러나 잘게 나누어져 있는 것들을 한번에 파악하는 것이 정말 중요함. Decentralize R&R but centralize managements!

EDA

  • Loosely coupling among services by data/event driven.
notion image

Architect를 자질을 쌓기 위해서는?

  • 코드를 잘, 많이 짜 봐야함
  • 어플리케이션을 내 손을 가지고 처음부터 끝까지 해보아야 함. 맨 아래에 있는 스크래치부터 시작해서 빌드 업 할 수 있어야 함
  • 마이크로서비스라는 부분을 동료들과의 협업, 리딩 경험 → 이러한 전반적인 과정을 5~6년 정도 해보아야 함
  • 소프트웨어 설계를 직접 그려보고 서로 평가해주고 하면서 아키텍트로 성장하게 되는 것임