반응형 개발248 드라이퍼스 모델 - 초보자에서 전문가에 이르는 여정 소프트웨어를 설계하고 개발하는 것은 IDE나 어떤 도구가 아니다. 바로 우리의 머리가 상상하고 창조해내는 것이다. 이를 소프트웨어와 비교하여 웻웨어(wetware)라는 말도 있다. 웻웨어(wetware)는 소프트웨어를 생각해내는 인간의 두뇌, 인간의 뇌세포나 사고과정을 의미한다. 이런 의미에서 초보자에서 전문가에 이르는 여정을 모델링한 드라이퍼스 모델에 대해 알아보고, 어떻게 성장 해야하는지 자신은 지금 어느 단계인지 생각해본다. 전문가의 특징전문가들은 그들의 행동을 세세하게 설명하지 못하는 경우가 많다. 그들의 반응은 거의 습관화되어 있어서 생각하기 전에 움직인다. 그들의 많은 경험은 뇌에서 언어를 사용하지 않는 무의식 영역에 저장되어 있기 때문에 관찰하기 어렵고 그들이 직접 말로 설명하기도 어렵다.하.. 2024. 8. 16. [MSA] 모듈화와 아키텍처 퀀텀 시스템 및 서비스 모듈화가 왜 필요하고 이와 관련된 아키텍처 퀀텀이라는 것은 무엇인지 정리해본다. 모듈화(분산 시스템)모듈화란 시스템을 작은 단위로 분리하여 나누는 것으로 기본적으로 결합도를 낮추는 것이라고 할 수 있다. 비즈니스가 경쟁 우위를 유지하기 위해서는 아래 그림처럼 시장 출시 속도가 빨라야 하고, 이를 위해서는 민첩성이 필요하다. 기술적으로 보면 가용성, 확장성, 배포성, 시험성(테스트), 유지 보수성이 필요하다고 할 수 있다. 특히, 기술 때문에 비즈니스가 발목을 잡히지 않게 하려면 민첩성(배포성, 시험성(테스트), 유지 보수성)은 필수이다. 그리고 모듈화를 통해서 기술적인 부분들이 용이해 질 수 있다. 확장성, 탄력성 모듈화를 통해 필요한 기능만 독립적으로 리소스 낭비없이 빠른 속도로 대.. 2024. 8. 15. [MSA] 분산 트랜잭션 최종 일관성(Eventual Consistency) 구현 방법 비교 MSA에서 서비스의 성능, 가용성, 유연성 등의 이유로 강력한 동기화 대신 최종 일관성(Eventual consistency)이라는 방법으로 데이터를 동기화하는 방법을 많이 사용한다. 최종 일관성을 구현하는 패턴들을 알아보고, 각각의 장단점을 알아본다. 최종 일관성(Eventual consistency) 구현 방법1. 백그라운드 동기화 패턴외부의 서비스 또는 프로세스가 데이터 소스를 주기적으로 체크해서 데이터 소스를 서로 동기화 하는 방법데이터 동기화를 위한 시간이 가장 긴 편(배치Job, 주기적 실행 등)백그라운드 프로세스는 트랜잭션에 포함된 테이블과 데이터 소스를 알고 있어야 하고, 어떤 데이터가 변경됐는지 알아야 함백그라운드 프로세스는 이벤트 스트림, 데이터베이스 트리거, 원본/타깃 테이블 비교 .. 2024. 8. 11. [MSA] 데이터 베이스 ACID와 BASE 비교 ACID 트랜잭션먼저 ACID 트랜잰션에 대한 이해가 명확히 되어 있어야 한다. ACID 트랜잭션에 대한 이해없이 분산 트랜잭션에 대한 트레이드오프 분석은 불가능하다.원자성(Actomicity): 트랜잭션 범위 내의 작업들은 모두 커밋되거나 모두 롤백되어야 함, 모두 한 덩어리로 작업이 되어야 함일관성(Consistency): 트랜잰션 범위 내에서는 데이터베이스의 일관성 유지, 무결성 제약조건 유지격리성(Isolation): 개별 트랜잭션이 격리되서 커밋 전까지 서로 영향을 주지 않음내구성(Durability): 트랜잭션 실행으로 인한 데이터에 대한 영구 보존여러 서비스에 분산된 트랜잭션 처리는 ACID 지원이 불가능하다. 개별 서비스 단위의 ACID만 지원 가능하다.분산 트랜잭션에서는 ACID 대신 B.. 2024. 8. 11. [MSA] 서비스의 데이터 오너십(소유) 종류와 처리 방법 마이크로서비스에서 일반적으로 테이블에 데이터 쓰는(Write) 서비스가 해당 데이터에 대한 오너십을 가지게 된다. 명확하게 도메인 단위로 데이터 분리가 가능하다면 오너십이 명확해지지만, 여러 서비스가 공동 오너십을 가지는 경우 복잡해지게 된다. 데이터에 대한 오너십의 종류와 처리 및 해결 방법에 대해 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조했다. 데이터 오너십(Ownership) 종류1. 단독 오너십- 오직 한 서비만 테이블에 테이터를 쓰는 것- 가장 단순하고 명확하고 직관적이라 관리가 쉽다 2. 공통 오너십- 대부분(많은)의 서비스들이 동일한 테이블에 데이터 쓰기를 하는 경우 - 예를들어, 많은 서비스에서 공통으로 적용되는 Audit 감사 테이블 등이 .. 2024. 8. 10. [MSA] 코드 재사용 및 공유 패턴 종류 및 장단점 서비스를 구현하면서 공통되는 코드들을 재사용 및 공유하는 방법을 알아보고, 각 패턴들의 장단점을 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조했다. 코드 재사용에 수반되는 트레이드오프에 대한 분석없이 무턱대고 사용하면 아키텍처적으로 문제가 될 수 있다. 예를들어, 21초반까지 유행했던 서비스지향 아키텍처(SOA)는 지나친 재사용을 강조하여 현재까지 많은 레거시들이 변경관리와 유지보수 등으로 힘들어한다. 기본적으로 코드 재사용은 추상화를 통해서 발생하지만, 변경 빈도가 낮을 때 가치가 있다. 1. 코드 복제- 코드를 복제해서 각 서비스에 복사해서 사용하는 방법- 코드가 정적이고, 버그 위험성이 없고, 변경이 거의 없는 경우에 적합(ex. 단순 유틸리티, 어노테이션.. 2024. 8. 5. 웹 프론트(화면) 성능 지표 알아보기 웹 브라우저에서 화면을 랜더링하는 과정과 화면 성능 지표에 대해서 정리해본다. 화면 랜더링 과정화면 랜더링 과정은 간단히 위의 그림처럼 Dom을 먼저 구성하고, Style, Layout 및 Layer 적용 과정, 그리고 Paint를 하는 과정 순서대로 진행이 된다. Layer는 크롬 개발자도구에서 More tools -> Layers에서 확인이 가능하다. 화면 성능 지표 화면 성능 관련 지표는 대략적으로 순서대로 작성하면 아래와 같다. 아래 지표들은 크롬 브라우저의 Performance 탭에서 확인이 가능하다. 지표(매트릭)내용TTFB (Time To First Byte)- 페이지를 요청했을 때 서버에서 데이터의 첫 번째 바이트가 도착하는 시점을 나타냄- 주로 서버 성능과 직결FP(First Pa.. 2024. 7. 4. DX(Digital Transformation) 이해하기 DX(Digital Transformation)는 디지털 전환이라는 의미로 전반적인 비즈니스 범위에서 디지털 기술을 적용해서 변화, 혁신하는 것을 의미한다. 기존에도 비즈니스에 다양한 IT기술들을 적용해서 활용을 해왔지만 DX는 기업의 전략, 조직 문화, 일하는 방식, 디지털 기술 적용 등 광범위한 변화를 가져온다는 차이점이 있다. 그리고 무엇보다 비즈니스의 근본적인 혁신을 위해 비즈니스의 주체를 IT에 맡긴다는 것이 특징이다. 기존에는 IT가 비즈니스를 후방에서 지원하는 형태로 존재해 왔고 비즈니스의 주체는 각 조직의 사업부서가 주도했다. 하지만 DX는 IT가 비즈니스의 주체가 되어 빠르게 변하는 시장에 대응하는 구조를 갖는다. 기존 IT활용과 DX 구조의 비교기존 IT 활용 구조기존 IT 기술 활용.. 2024. 6. 23. 이전 1 2 3 4 5 6 ··· 31 다음 반응형