반응형

Server System/Software Architecture 8

좋은 소프트웨어란 (1)

기능 > 구조?기능 소프트웨어 아키텍쳐란 무엇이며, 우리가 왜 이것에 대한 고민을 해야할까. 소프트웨어를 작성하는데 있어서 구성 요소를 크게 나누자면, 기능과 구조가 있다고 볼 수 있다. 소프트웨어 아키텍쳐란, 이 중 “구조”에 해당하는 이야기이다. 소프트웨어를 작성할 때 요구사항을 만족시키기 위한 “기능”을 구현하는 것이 중요할까, 소프트웨어의 “구조”를 잘 설계하는 것이 중요할까. 책 ‘리팩토링’의 저자이자 세계적인 소프트웨어 공학자인 마틴 파울러는 결국은 구조가 중요하다는 이야기를 한적이 있다. https://youtu.be/4E1BHTvhB7Y   사용자에게 제공하고자 하는 기능을 구현하는 것(즉, 소프트웨어 개발의 요구사항을 만족하는 것)은 당연히 중요한 일이다. 그러나 지속 가능한 서비스라면,..

클린 아키텍쳐 vs 헥사고날 아키텍쳐 (3)

2024.06.03 - [Server System/Software Architecture] - 클린 아키텍쳐 vs 헥사고날 아키텍쳐 (1) 클린 아키텍쳐 vs 헥사고날 아키텍쳐 (1)클린아키텍쳐를 처음 소개한 Bob Martin의 블로그(blog entry about Clean Architecture)에 다음과 같은 말이 나온다(https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)."The diagram at the top of this article [alphahackerhan.tistory.com2024.06.05 - [Server System/Software Architecture] - 클린 아키텍쳐 vs 헥사고날..

클린 아키텍쳐 vs 헥사고날 아키텍쳐 (2)

2024.06.03 - [Server System/Software Architecture] - 클린 아키텍쳐 vs 헥사고날 아키텍쳐 (1) 클린 아키텍쳐 vs 헥사고날 아키텍쳐 (1)클린아키텍쳐를 처음 소개한 Bob Martin의 블로그(blog entry about Clean Architecture)에 다음과 같은 말이 나온다(https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)."The diagram at the top of this article [alphahackerhan.tistory.com클린 아키텍쳐, 헥사고날 아키텍쳐의 공통의 목표와 의존성 방향에 대한 이해를 하고 싶다면, 위 포스팅 내용을 확인해주세요!..

클린 아키텍쳐 vs 헥사고날 아키텍쳐 (1)

클린아키텍쳐를 처음 소개한 Bob Martin의 블로그(blog entry about Clean Architecture)에 다음과 같은 말이 나온다(https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)."The diagram at the top of this article [Clean Architecture] is an attempt at integrating all these architectures [including Hexagonal Architecture] into a single actionable idea." 즉, 헥사고날 아키텍쳐와 클린 아키텍쳐는 서로 다른 개념이 아니고, 헥사고날 아키텍쳐는 클린 아키텍쳐..

객체 지향적 사고, 객체 지향적 프로그래밍 Part 1.

객체 지향적인 프로그래밍을 한다고 했을 때 떠오르는 것들 SOLID Single Responsibility Principle Open Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle GoF Factory Pattern Strategy Pattern Decorator Pattern Visitor Pattern … 구조적(절차지향적) 프로그래밍 vs 객체지향 프로그래밍 이 둘의 가장 큰 차이점은, 객체 지향 프로그래밍에서는 “Shift of responsibility”(책임의 이동) 라는 개념이 적용되었다는 것이다. 그것이 핵심이다. 예를 들어, “모든 학생들에..

싱글톤의 모든 것. Singleton A to Z

싱글톤의 모든 것. 까지는 좀 구라고. '이 정도 알면 어디가서 싱글톤이 뭔지는 안다고 할 수 있다' 정도가 아닐까 싶다. 1. 전통적인 싱글톤 방식 public class Singleton { private static Singleton uniqueInstance; // other instance variable in here public static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } } 문제점: 멀티스레드 환경에서, if 문에 두 스레드(혹은 그 이상)가 동시에 들어가서 인스턴스가 두 개(혹은 그 이상)가 만들어질 수 있음. 2..

Clean Architecture - 2. 클린 아키텍쳐의 핵심: Use Case

중요한건 Use case다. 클린아키텍쳐를 한마디로 표현하면, 그건 Use case다. 그럼 그 Use case라는게 뭘까. Use case란 내가 만들고자하는 시스템(혹은 서비스라고 하자)을 사용하는 클라이언트가 그 시스템을 통해 하고자 하는 것을 말한다. 예를 들어, '영화관' 이라는 서비스가 있다고 가정해보자. 영화관에서 손님(클라이언트)는 '영화 예매'를 할 수도 있고, '예매 취소'를 할 수도 있고, '환불', 심지어 '팝콘 사기'를 할 수도 있을 것이다. 이 때, 이런 '영화 예매', '예매 취소', '환불', '팝콘 사기' 등등이, '영화관'이라는 시스템에 사용자가 요청할 수 있는, '영화관'의 Use case이다. 클린 아키텍쳐에서 말하는 좋은 아키텍쳐란, 아키텍쳐(설계도)가 그 시스템이 ..

Clean Architecture - 1. 클린 아키텍쳐의 기본 철학 한 줄 요약.

들어가면서 인터넷을 검색해보면, 클린 아키텍쳐에 대한 수 많은 자료들이 있다. 대부분 성실하고, 또 자세하게 기술되어 있지만, (나도 그랬고) 초보자들이 한번에 그 방대한 양의 클린 아키텍쳐를 이해하기는 힘들거란 생각이 든다. 그래서, 클린 아키텍쳐를 몇 번에 나누어서 설명해보고자 하는데, 먼저 가장 기본인, "그래서 그 유명한 클린 아키텍쳐라는게 대체 뭔데? 그걸 하면 뭐가 좋은 건데?"에 대해서 이야기 해보고자 한다. 한 줄 요약 먼저 한 줄로 가장 중요한 클린 아키텍쳐의 목적과 철학에 대해 말하자면, "나의 핵심 비즈니스 로직(코드)와 나머지 툴들에 대한 결합도를 낮추겠다" 라는 것이다. 간단한 예시 예를 들어, '영화 예매를 도와주는 웹서비스'를 만든다고 가정해보자. 해당 웹서비스를 만들기 위해서..

반응형