SlideShare a Scribd company logo
1 of 69
Download to read offline
불안의 원인들
애플리케이션 아키텍처 안티 패턴
‑ 박성철 ‑
안녕하세요(‑.‑)
生卽苦
(생 즉 고)
아키텍처
아키텍처
아키텍처 = 비전 + 구조
애플리케이션 아키텍처 구조
학습곡선
발단, 도약, 고원, 해구, 하향
심판관
DRY & OCP
“모든 시스템은 그 시스템이 살아 있는 한 평생
변경이 된다. ”
DRY, 중복배제원칙
Donʹt Repeat Yourself
“모든 지식의 단편은 시스템 안에 단일의, 명백
한, 권위있는 표상을 가져야 한다.”
Once and Only Once
Abstraction Principle
OCP, 개방폐쇄원칙
Open‑Closed Principal
“소프트웨어의 구성요소(클래스, 모듈, 함수 등)
은 확장은 가능하지만 수정은 불가능해야 한다.”
시스템 아키텍처와 로직
A long time ago in a galaxy far, far away...
다중 계층 아키텍처
오늘날의 전형적인 애플리케이션
아키텍처,
추상화 수준에 따라 애플리케이션
을 여러 그룹으로 분해하여 애플리
케이션의 구조를 체계화
표현 계층
비지니스 계층
데이터 계층
단일 티어
대형/중형 컴퓨터 + 천공카드 or 더미 터미털
중앙 집중 처리
이중 티어
PC, 워크스테이션 + 미니 컴퓨터
클라이언트‑서버 모델
스마트 UI ‑ 안티패턴
N‑티어
Post PC & Internet
Application Server
표현 계층 ‑ 비지니스 계층 ‑ 데이터 계층
다중 계층 아키텍처
트랜잭션 스크립트
아키텍처 패턴
애플리케이션 = 트랜잭션의 묶음
안티패턴 #1
연통 배관
(Stovepiping)
연통 배관
애플리케이션의 각 모듈이 독립적으로 개발되어 다른 모듈과
로직이나 데이터를 공유하지도 않고 상호작용하지도 않는다.
자동 연통 대량 생산
연통 배관에서 반복적으로 같은 구조가 나타나면 생산성을
높이고자 소스 코드 자동 생성기를 사용해서 중복된 코드를
대량으로 생산한다.
코드 중복 가속화
구조가 바뀌어야 할 경우 모든 코드를 변경해야 함
추상화로 해결해야 할 문제
수동 연통 대량 생산 (복봍 방법론)
관심사에 따른 계층 설계
관심사 분리 원칙에 따라 계층도 각 계층의 관심사에 따라 설
계
안티패턴 #2
스마트 DAO
스마트 DAO
대부분의 비지니스 로직을 프로그래밍 언어가 아닌 SQL에 담
고 프로그래밍 언어는 이 SQL를 준비하고 실행하고 결과를
받는 작업만 수행하는 데 사용
중복
재사용 할 수 없는 1회용(ad‑hoc) 쿼리 사용으로 로직의 중복
이 발생하고 유지보수성이 떨어짐
SELECT username, secword FROM users WHERE uid=1;
SELECT uid, username, secword, firstname, lastname, regidate, birth, gender, rate
FROM users WHERE UID=1;
로직표현
SQL로 표현되는 비지니스 로직
애플리케이션은 SQL에 매개변수를 전달하고 쿼리 결과를
가공할 뿐
SELECT username, secword
FROM users
WHERE UID=1 AND birday > "20000101" AND gender='F' AND rate > 40
UPDATE users
SET rate = rate + 10
WHERE UID=112 AND gender='F' AND rate > 40 AND status='T';
SW의 복잡도를 다루는 기술
Abstraction
Encapsulation
Information Hiding
Modularization
Separation of Concerns
Coupling and Cohesion
Divide‑and‑Conquer
SQL 추상화 기술
ORM(Hibernate, JDO, JPA)
Active Record
Query Builder(JooQ, QueryDSL)
Table Data Gateway
무거운 서비스
(Fat Service)
안티패턴 #3
무거운 서비스
뒤범벅 아키텍처
(Jumble Architecture)
뒤범벅 아키텍처
애플리케이션의 횡적인 설계 요소와 종적인 설계 요소가 혼
합되어서 변경에 취약한 아키텍처가 만들어짐
사용자의 기능 요청을 구현하는 종적인 관심
여러 기능에 공통적으로 적용되어야 하는 횡적인 관심
횡적 요소의 모듈화로 재사용성과 안정성 확보 필요
뒤범벅 아키텍처 해법1
파이프 & 필터 패턴
여러 단위 처리 모듈(필터)을 순서대로 나열하고 한 필터에 데
이터를 입력해 얻은 출력을 그 다음 필터의 입력으로 삼도록
구성하는 아키텍처 패턴
해법 1‑1
애플리케이션 계층 추가
추가 계층을 만들어서 횡적 요소와 종적 요소를 조립
애플리케이션 서비스 계층과 비지니스 서비스 계층 분리
횡적 관심사의 모듈화
Pipe & Filter Pattern
해법 1‑2
위임
로직을 비니지스 객체로 분리하고 서비스는 비니지스 객체
로 위임
애플리케이션 서비스 계층 추가와 사실상 동일
아키텍처가 아닌 객체 설계로 해결
Pipe & Filter Pattern
뒤범벅 아키텍처 해법2
관점 지향 프로그래밍(AOP)
기능에 직교적인 횡적 관심사를 분리해 모듈화 수준을 높이
는 기술
안티패턴 #4
무거운 서비스
긴 공개 메서드
(Long Method)
긴 공개 메서드
클래스에 공개 메서드 뿐, 각 메서드의 크기가 너무 길다.
미미한 기능 분화, 낮은 유지 보수성
중복 다량 발생
단일 책임 원칙 위반
기능 분화로 재사용 코드 발견, 추상화의 기회
조합 메서드
public String renderPage(PageData data, boolean isSuite) {
ResultPage result = prepareResultPage(isSuite);
if(isTestPage(data)) {
result.includeSetup(data);
result.includeTeardown(data);
}
return result.getHtml();
}
긴 공개 메서드
프로그래밍 = DSL 개발
(Domain Specific Langage)
ʺ프로그래밍 대가는 시스템을 작성할 프로그램이 아니
라 말하고 싶은 이야기로 생각한다. 그들은 프로그래밍
언어의 장치를 사용해서 더 표현력이 풍성하고 강한 언
어를 만들고 그 언어로 이야기를 말한다.ʺ
‑ 로버트 C 마틴 ‑
긴 공개 메서드
함수 작성법
공개 메서드는 이야기(의도, 작업 흐름) 흐름을 나타내라
비공개 메서드는 이야기의 의미를 정의하라
작게 만들고 한가지만 하라(SRP)
함수내 동일한 추상화 수준 유지
서술적인 이름 사용
명령/조회의 분리
고차 함수를 사용함 함수 수준 추상화(람다식)
안티패턴 #5
무거운 서비스
하는 놈 따로, 아는 놈 따로
(Doer & Knower)
하는 놈 따로, 아는 놈 따로
OOP 언어를 사용하고 클래스를 만들지만 사실은 여전히 구
조적으로 프로그래밍을 하므로 로직과 데이터가 애플리케이
션 전체적으로 분리되어 있다.
DB 의존적 애플리케이션
모든 상태를 DB에만 보관
상태 조작은 SQL로 처리
애플리케이션 코드는 단순히 인자와 SQL 결과를 전달
도메인 모델 도입
도메인 모델: 행위와 데이터를 포함하는 비지니스 영역의
객체 모델
객체와 객체의 관계망으로 비지니스 영역을 집합적으로 서
술
복잡한 비지니스 로직을 표현 가능
Active Record 또는 ORM
상태의 영속화
도메인 모델이 도입되면 상태를 메모리에서 관리
데이터의 저장은 메모리상 상태의 영속화 개념으로 바뀜
많은 상태 조작이 메모리에서 수행됨
프로그래밍 언어의 복잡도를 관리하는 기능 활용
빈약한 도메인 모델
(Anemic Domain Model)
단순 데이터 접근 메서드만 있는 도메인 모델
도메인 모델을 도입하는데 드는 비용만 들고 이점을 하나
도 못 누림
모든 로직은 서비스에 몰려 있음, 트랜잭션 스크립트
무법천지
비지니스 규칙이 체계적으로 관리되지 않고 비지니스 로직
곳곳에 중복 분산
도메인 모델 객체 활용
Specification 모델링 패턴
BRE(비지니스 룰 엔진) 사용
if(user.age() > AGE_ADULT && user.isMale() && user.getLoyalty() > LOYALTY_VIP) {
giveGift(user);
}
안티패턴 #6
무거운 서비스
단일 객체 서비스
(Single Class Service)
단일 객체 서비스
서비스가 객체 하나로 구성되어 있고 적절하게 분화하지 않
음
서비스 객체의 용도
경계 객체
컨트롤러
파싸드(Facade)
낮은 응집도 높은 결합
코드의 중복이 많고 추상화 수준이 낮아서 코드를 수정함으
로서 발생하는 영향을 예측하기 어렵고 단일 요구사항으로
인한 변경 지점이 흩어져 있다.
클래스 추가 공포증
클래스를 추가하면 클래스 설계가 복잡해진다는 믿음
OOD에 대한 경험 부족
영어...
지나치게 엄격한 아키텍처
 
높은 응집도 낮은 결합
지역적 변경(SRP)
중복 최소화(DRY)
로직과 데이터 근거리 보관
변경 주기에 따른 응집
메시지 = 인터페이스
빈약한 추상화
추상화: SW의 복잡도를 다루는 기술(OOP, FP, 메타 프로그래밍)
인터페이스(완전 추상 클래스) 없는 컴포넌트 경계(정적 바
인딩)
일반화와 특화의 구분 부재
과도한 중복으로 견고성, 신뢰성, 재사용성, 가독성에 문제
발생
서비스 객체는 비니지스 계층의 경계 객체 또는 Facade
비지니스 계층은 넓은 영역
잘못된 의존 관계
정적 바인딩
전역 변수
하드 코딩
싱글턴 남용
인터페이스 미사용
무거운 서비스 정리
AOP를 사용해서 종적 관심사와 횡적 관심사 분리
조합 메서드를 활용하고 DSL을 개발하라
도메인 모델을 도입하라
큰 서비스를 작은 클래스로 분해하고 위임하라
높은 응집도와 낮은 결합도를 갖도록 설계하라
기타
과잉 일반화(Over Generalizing)
Object, 문자열, Map 같이 지나치게 일반적인 타입의 과용
하나님 객체(God Object)
과도한 재사용 시도
Super~
여러 기능에 공통적으로 적용되어야 하는 횡적인 관심
가독성과 변경이 자주 일어나며 (횡적 요소의) 재사용성과
신뢰성이 떨어짐
황금 망치 증후군
편의 객체 상속
편의 객체를 상속함으로써 소중한 상속의 기회를 낭비
기반 클래스가 하나님 객체가 될 위험이 큼
위임으로 해결 가능
과잉 최신 기술 준수
(Over Buzzword Compliance)
온갖 최신 기술로 도배된 아키텍처
검증되지 않은 위험한 기술
교육비용 발생
고객의 잘못된 요구를 무비판적으로 수용
프로젝트 수행 여력이 부족해짐
클라우드
클라우드 적합성
매우 기민하고 가용성이 높은 서비스를 단명하고 망가질 것
으로 예상되는 컴포넌트로 구축
클라우드 특성
전통적 인프라 클라우드
n‑tier SOA, MSA
수직확장성 수평확장성
장애 예방 장애 예상
트랜잭션내 정합성 결과적 정합성
경직성 기민/유연성
수동 운영 자동 운영
낮은 신뢰성 자가 복구
점검 운영 중단 무중단
클라우드 성숙도
결론
연통 배관
스마트 DAO
뒤범벅 아키텍처
긴 공개 메서드
하는 놈 따로, 아는 놈 따로
단일 객체 서비스
과잉 일반화
하나님 객체
편의 객체 상속
과잉 최신 기술 준수

More Related Content

What's hot

애자일 스크럼과 JIRA
애자일 스크럼과 JIRA 애자일 스크럼과 JIRA
애자일 스크럼과 JIRA Terry Cho
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
 
1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스Terry Cho
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향Young-Ho Cho
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD増田 亨
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기경원 이
 
우아한 객체지향
우아한 객체지향우아한 객체지향
우아한 객체지향Young-Ho Cho
 
AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用Amazon Web Services Japan
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredisnasa9084
 
Clean architectures with fast api pycones
Clean architectures with fast api   pyconesClean architectures with fast api   pycones
Clean architectures with fast api pyconesAlvaro Del Castillo
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)Yoshitaka Kawashima
 
Massive service basic
Massive service basicMassive service basic
Massive service basicDaeMyung Kang
 
データレイクを基盤としたAWS上での機械学習サービス構築
データレイクを基盤としたAWS上での機械学習サービス構築データレイクを基盤としたAWS上での機械学習サービス構築
データレイクを基盤としたAWS上での機械学習サービス構築Amazon Web Services Japan
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
 
ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기Yungon Park
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]Koichiro Matsuoka
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門増田 亨
 
Odoo Experience 2018 - The Odoo JS Framework
Odoo Experience 2018 - The Odoo JS FrameworkOdoo Experience 2018 - The Odoo JS Framework
Odoo Experience 2018 - The Odoo JS FrameworkElínAnna Jónasdóttir
 

What's hot (20)

애자일 스크럼과 JIRA
애자일 스크럼과 JIRA 애자일 스크럼과 JIRA
애자일 스크럼과 JIRA
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
 
1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기
 
우아한 객체지향
우아한 객체지향우아한 객체지향
우아한 객체지향
 
AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
Clean architectures with fast api pycones
Clean architectures with fast api   pyconesClean architectures with fast api   pycones
Clean architectures with fast api pycones
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
 
Jenkinsはじめました - Yahoo! JAPANのCI+CD -
Jenkinsはじめました - Yahoo! JAPANのCI+CD -Jenkinsはじめました - Yahoo! JAPANのCI+CD -
Jenkinsはじめました - Yahoo! JAPANのCI+CD -
 
Rich domain model
Rich domain modelRich domain model
Rich domain model
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
 
データレイクを基盤としたAWS上での機械学習サービス構築
データレイクを基盤としたAWS上での機械学習サービス構築データレイクを基盤としたAWS上での機械学習サービス構築
データレイクを基盤としたAWS上での機械学習サービス構築
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
 
Odoo Experience 2018 - The Odoo JS Framework
Odoo Experience 2018 - The Odoo JS FrameworkOdoo Experience 2018 - The Odoo JS Framework
Odoo Experience 2018 - The Odoo JS Framework
 

Viewers also liked

변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션Sungchul Park
 
동영상입문
동영상입문동영상입문
동영상입문Sukjin Yun
 
HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2SeungHyun Hwang
 
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton patternYoonJong Choi
 
IoC and DI Pattern
IoC and DI PatternIoC and DI Pattern
IoC and DI PatternSangwon Ko
 
프레임워크와 어플리케이션 동시에 구축하기
프레임워크와 어플리케이션 동시에 구축하기프레임워크와 어플리케이션 동시에 구축하기
프레임워크와 어플리케이션 동시에 구축하기Sangwon Ko
 
Servlet design pattern
Servlet design patternServlet design pattern
Servlet design patternSukjin Yun
 
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩XpressEngine
 
Servlet Architecture
Servlet ArchitectureServlet Architecture
Servlet ArchitectureJU Chae
 
Anatomy of a Data Product and Lending Club Data
Anatomy of a Data Product and Lending Club DataAnatomy of a Data Product and Lending Club Data
Anatomy of a Data Product and Lending Club DataSri Ambati
 
Hibernate start (하이버네이트 시작하기)
Hibernate start (하이버네이트 시작하기)Hibernate start (하이버네이트 시작하기)
Hibernate start (하이버네이트 시작하기)visual khh
 
Starpl 20111012 스타플5를_만들기_시작하며
Starpl 20111012 스타플5를_만들기_시작하며Starpl 20111012 스타플5를_만들기_시작하며
Starpl 20111012 스타플5를_만들기_시작하며DK Lee
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)DK Lee
 

Viewers also liked (20)

변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션
 
Design patterns
Design patternsDesign patterns
Design patterns
 
동영상입문
동영상입문동영상입문
동영상입문
 
HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2
 
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton pattern
 
IoC and DI Pattern
IoC and DI PatternIoC and DI Pattern
IoC and DI Pattern
 
프레임워크와 어플리케이션 동시에 구축하기
프레임워크와 어플리케이션 동시에 구축하기프레임워크와 어플리케이션 동시에 구축하기
프레임워크와 어플리케이션 동시에 구축하기
 
Heartbeat
HeartbeatHeartbeat
Heartbeat
 
B Fn As
B Fn AsB Fn As
B Fn As
 
Servlet design pattern
Servlet design patternServlet design pattern
Servlet design pattern
 
Realm Java
Realm JavaRealm Java
Realm Java
 
Hibernate5.x
Hibernate5.xHibernate5.x
Hibernate5.x
 
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
 
Servlet Architecture
Servlet ArchitectureServlet Architecture
Servlet Architecture
 
Redis edu 3
Redis edu 3Redis edu 3
Redis edu 3
 
P2P Transfers
P2P TransfersP2P Transfers
P2P Transfers
 
Anatomy of a Data Product and Lending Club Data
Anatomy of a Data Product and Lending Club DataAnatomy of a Data Product and Lending Club Data
Anatomy of a Data Product and Lending Club Data
 
Hibernate start (하이버네이트 시작하기)
Hibernate start (하이버네이트 시작하기)Hibernate start (하이버네이트 시작하기)
Hibernate start (하이버네이트 시작하기)
 
Starpl 20111012 스타플5를_만들기_시작하며
Starpl 20111012 스타플5를_만들기_시작하며Starpl 20111012 스타플5를_만들기_시작하며
Starpl 20111012 스타플5를_만들기_시작하며
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
 

Similar to 자바 서버 애플리케이션 아키텍처 안티 패턴

[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern대영 노
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정중선 곽
 
OOP - Object Oriendted Programing
OOP - Object Oriendted ProgramingOOP - Object Oriendted Programing
OOP - Object Oriendted ProgramingChangHyeon Bae
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론JeongDong Kim
 
대규모 구조
대규모 구조대규모 구조
대규모 구조ukjinkwoun
 
11장 시스템
11장 시스템11장 시스템
11장 시스템kidoki
 
OOP SOLID PRINCIPLE(KOREAN)
OOP SOLID PRINCIPLE(KOREAN)OOP SOLID PRINCIPLE(KOREAN)
OOP SOLID PRINCIPLE(KOREAN)Daeyeon Kim
 
소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화영기 김
 
[강의] OOP 개요
[강의] OOP 개요[강의] OOP 개요
[강의] OOP 개요Nohyun Kee
 
소프트웨어 아키텍처
소프트웨어 아키텍처소프트웨어 아키텍처
소프트웨어 아키텍처영기 김
 
실용주의 아키텍트
실용주의 아키텍트실용주의 아키텍트
실용주의 아키텍트Haeil Yi
 
[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계AnselmKim
 
SoftwareEngeneering3rd
SoftwareEngeneering3rdSoftwareEngeneering3rd
SoftwareEngeneering3rd영진 박
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기Sungchul Park
 
소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법Jay Park
 
도메인 주도 설계 - 16 대규모 구조
도메인 주도 설계 - 16 대규모 구조도메인 주도 설계 - 16 대규모 구조
도메인 주도 설계 - 16 대규모 구조SH Park
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개HYUN-JOO LEE
 

Similar to 자바 서버 애플리케이션 아키텍처 안티 패턴 (18)

[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정
 
OOP - Object Oriendted Programing
OOP - Object Oriendted ProgramingOOP - Object Oriendted Programing
OOP - Object Oriendted Programing
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론
 
대규모 구조
대규모 구조대규모 구조
대규모 구조
 
11장 시스템
11장 시스템11장 시스템
11장 시스템
 
OOP SOLID PRINCIPLE(KOREAN)
OOP SOLID PRINCIPLE(KOREAN)OOP SOLID PRINCIPLE(KOREAN)
OOP SOLID PRINCIPLE(KOREAN)
 
소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화소프트웨어 아키텍처 문서화
소프트웨어 아키텍처 문서화
 
[강의] OOP 개요
[강의] OOP 개요[강의] OOP 개요
[강의] OOP 개요
 
소프트웨어 아키텍처
소프트웨어 아키텍처소프트웨어 아키텍처
소프트웨어 아키텍처
 
IRIS
IRISIRIS
IRIS
 
실용주의 아키텍트
실용주의 아키텍트실용주의 아키텍트
실용주의 아키텍트
 
[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계
 
SoftwareEngeneering3rd
SoftwareEngeneering3rdSoftwareEngeneering3rd
SoftwareEngeneering3rd
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
 
소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법
 
도메인 주도 설계 - 16 대규모 구조
도메인 주도 설계 - 16 대규모 구조도메인 주도 설계 - 16 대규모 구조
도메인 주도 설계 - 16 대규모 구조
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개
 

More from Sungchul Park

애자일 안한 이야기
애자일 안한 이야기애자일 안한 이야기
애자일 안한 이야기Sungchul Park
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guideSungchul Park
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법Sungchul Park
 
Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신Sungchul Park
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 Sungchul Park
 
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용Sungchul Park
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동Sungchul Park
 
자바8 나머지 공개
자바8 나머지 공개자바8 나머지 공개
자바8 나머지 공개Sungchul Park
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개Sungchul Park
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰Sungchul Park
 
Open Source가 바꾼 자바
Open Source가 바꾼 자바Open Source가 바꾼 자바
Open Source가 바꾼 자바Sungchul Park
 

More from Sungchul Park (17)

애자일 안한 이야기
애자일 안한 이야기애자일 안한 이야기
애자일 안한 이야기
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guide
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법
 
Java.next
Java.nextJava.next
Java.next
 
Geeks at SK Planet
Geeks at SK PlanetGeeks at SK Planet
Geeks at SK Planet
 
Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신
 
Java the good parts
Java the good partsJava the good parts
Java the good parts
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
 
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
 
자바8 나머지 공개
자바8 나머지 공개자바8 나머지 공개
자바8 나머지 공개
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개
 
팀장 잔소리
팀장 잔소리팀장 잔소리
팀장 잔소리
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰
 
Open Source가 바꾼 자바
Open Source가 바꾼 자바Open Source가 바꾼 자바
Open Source가 바꾼 자바
 
Work With Engineer
Work With EngineerWork With Engineer
Work With Engineer
 
DDD 산책
DDD 산책DDD 산책
DDD 산책
 

자바 서버 애플리케이션 아키텍처 안티 패턴