분류 전체보기 (87) 썸네일형 리스트형 우아콘 2023 리뷰 및 후기 https://woowacon.com/presentations WOOWACON 2023 한 번의 배달을 위해 필요한 모든 기술들 woowacon.com 2023년 11월 15일 수요일, 우아콘 2023에 참가하여 백엔드 기술에 대한 다양한 이야기들을 들었다. 내가 들은 세션들은 주로 점점 증가하는 대규모 트래픽에 대응하기 위해 이러이런것을 했어요를 소개하는 내용이었다. 세션을 진행한 팀은 다르지만 조회와 처리 이벤트를 분산하기 위해 CQRS 를 적용했다는 점, 이벤트 순서가 꼬이거나 발행을 실패했을 때를 대비하기 위해 Transaction outbox pattern 를 적용했다는 점을 공통으로 적용하고 있었다. 올해 '데이터 중심 애플리케이션 설계' 책을 힘겹게 정리해가면서 완독했지만 주로 이론적인 내용.. [4] 12~14 컴포넌트 컴포넌트의 역사 : 내가 생각했을 땐 분리의 역사 소프트웨어 개발 초창기에는 어떤 메모리 주소에 프로그램을 로드할 건지도 일일히 정해줘야 했었다. 라이브러리 함수도 직접 애플리케이션 코드에 포함해서 단일 프로그램으로 컴파일해야 했다. 그러다가 프로그램 사이즈도 너무 커지고 컴파일에도 오래 걸리니 앺 코드와 라이브러리 코드를 메모리 상에서 분리했다. 메모리 주소 몇 이상은 라이브러리 같은 규칙을 정하고 말이다. 그러면 라이브러리 따로 개별적으로 컴파일할 수 있었지만, 앺 코드가 너무 커지면서 라이브러리 밑에 집어넣는 비효율이 발생했다. 메모리 주소를 고정이 아닌 재배치를 하는게 해결책이었다. 그 기능을 로더가 해준다. 앺과 라이브러리를 로드할 위치를 로더에게 전달해주면 그에 맞게 컴파일러를 수정한다. 로더.. [3] 8~11장 SOLID SRP(Single Response Principle) 어떻게 하라고? 변경을 요청하는 주체(액터)가 다르면, 코드를 분리해라 왜? 액터가 다른데 같은 코드를 썼다간 다른 팀 모르게 수정될 가능성이 있음 코드 병합할 때 어려움 OCP(Open Closed Principle) 어떻게 하라고? 기능을 확장할 때는 코드 수정이 아니라 코드를 추가하는 방향으로 간다. 왜? 변경을 쉽게 처리하되 시스템이 너무 많은 영향 받게 하지 않기 위해 LSP(Liskov Substitute Principle) 어떻게 하라고? 다형성 개발할 때 부모 기능 잘 지켜라 완벽하게 이해하는 LSP (리스코프 치환 원칙) 왜? 변화에 쉽게 하기 위해 ISP(Interface Segregation Principle) 어떻게 하라고? 인.. [2] 3~6장 패러다임 개요 (구조적, 객체지향, 함수형 프로그래밍) 언어의 역사 1945년: 앨런 튜링이 바이너리 언어로 반복분, 분기문, 할당, 서브루틴, 스택 을 활용해 사람이 식별가능한 형태로 프로그램을 코드로 작성 1940년대 후반:“언어” 어셈블리 처음 등장. 바이너리 코드로 짜야했던 프로그래머의 고된일이 줄어듦. 1951년: 최초의 컴파일러 A0 등장. by 그레이스 호퍼 패러다임이란 프로그래밍을 하는 방법. 언제 어떤 프로그래밍 구조를 사용해야 하는지 결정한다. 세 가지 패러다임을 알려주겠다. 구조적 프로그래밍 프로그래밍의 역사 다익스트라는 네덜란드 최초의 프로그래머라는 직업을 가진 사람이다. 다익스트라는 어려운 프로그래밍을 해결하기 위해 증명이라는 수학적인 원리를 적용했다. “프로그래머" 는 입증된 구조를 이용하고, 이 구조를 코드와 결합시켜 코드가 올바름.. [1] 1~2 장 설계와 아키텍처란? 설계와 아키텍처의 차이? 설계와 아키텍처의 차이는 없다. 고수준과 저수준의 차이라고도 말하지만 어차피 고수준의 결정사항과 저수준의 세부사항은 이어져 있는 전체 설계의 구성요소일 뿐이다. 좋은 소프트웨어 설계의 목표? 필요한 시스템을 만들고 유지보수에 투입되는 인력을 최소화한다. 목표를 이루기 위해선 "코드는 나중에 정리하면 돼. 당장 출시가 먼저야"라는 거짓말에 홀리지 않는다. 왜? 개발 비용이 증가되는 주 요인이 변경 사항의 범위와 형태이기 때문이다. 아키텍처가 후순위가 되면 시스템 개발 비용이 더 많이 들고, 변경이 점점 어려워진다. 사례) 어떤 회사의 직원 수는 늘어나는데 생상선은 줄어듦. 결국 경영 관점에선 인건비는 늘어나고 사정이 악화되고 있었음. 왜? 코드 품질보다 시장 출시를 더 우선시 했기.. [12] 데이터 시스템의 미래 (끝) 지금까지 책의 내용은 현재 존재하는 것을 설명했다면 이번 장은 미래에는 어떻게 돼야 하는지 설명한다. 지금까지 설명했던 아이디어들을 함께 모아 그걸 기반으로 미래를 고찰한다. 데이터 통합 파생 데이터 시스템과의 결합 전문 검색 색인 같은 복잡한 검색 기능이 필요하면 전문적인 정보 탐색 도구가 필요하고, 이 시스템에 사본을 유지해야 한다. 데이터 사본을 여러 저장소 시스템에 유지해야할 때 입력과 출력을 분명히 해야한다. 어디서 처음 기록하는제, 원본 출처, 올바른 형식으로 어떻게 넣는지 등 ex. CDC 를 활용하면 색인은 전적으로 DB 에서 파생되므로 일관성이 보장된다. 근데 앺이 색인, DB에 직접 기록하게 하면 둘의 동기화가 깨질 수 있다. → 파생 데이터 시스템은 이벤트 로그를 기반으로 갱신하면 결.. [11] 스트림 처리 일괄 처리의 한계 및 스트림이 필요한 이유 일괄 처리는 사전에 입력을 유한한 크기로 한정한다. 데이터는 끊임없이 많기 때문에 일 단위 나 일정 기간씩 청크를 나눈다. 문제는 하루가 지나야 반영된다는 것이다. 대신 스트림은 고정된 시간 조각의 개념을 버리고 이벤트가 발생할 때마다 처리한다. 스트림 표현/저장/전송 하기 이벤트 스트림 생김새 하나의 레코드를 이벤트라고 한다. 작고 독립된 불변 객체이며 타임스탭프를 포함한다. 텍스트 문자열 or JSON or 이진 형태 등으로 부호화된다. 이벤트 전송 컨슈머 쪽에서 폴링하며 새 이벤트를 직접 가져올 수도 있지만 오버헤드가 커지기 때문에 프로듀서가 알려주는 편이 낫다. 메시징 시스템 이벤트 알림 전달 목적으로 개발된 발행/구독 모델 여러 프로듀서가 같은 토픽으로.. 에버노트에서 업노트로 갈아탄 이유 필자는 에버노트를 5년 넘게 사용한 헤비유저다. 연 마다 자동결제가 되는데 금액을 보고 깜짝 놀랐다. 에버노트가 너무 좋아서 지금까지 썼다기 보단 마땅한 대체제를 찾지 못해서 쓰고 있었던 건데 오우 1년에 99000원을 내자니 순간 돈이 너무 아깝게 느껴졌다. 이게 트리거가 되어 노트 앱을 탐색해보았고 업노트를 알게 되었다. 2달 안에 환불 신청해서 에버노트 환불받음ㅎ 잘가~~ 외관 외관은 에버노트와 비슷하다! 맨 왼쪽은 카테고리, 가운데엔 노트 목록, 오른쪽엔 노트 내용이 위치한다. 장점1) 마이그레이션 빠름 업노트로 갈아탈 수 있게 해준 최고의 장점이다. 노션은 마이그레이션 하다 중도 포기했지만, 업노트는 4000 개를 8시간 만에 이틀에 걸쳐 완료할 수 있었다. 장점2) 한 노트에 여러 카테고리 지.. [10] 일괄 처리 시스템을 세 가지 유형으로 나눌 수 있다. 서비스 (온라인) - 클라이언트로부터 요청이 들어오면 실시간으로 응답해야 함. 성능 지표: 응답 시간 일괄 처리 시스템 (오프라인) - 정해진 시간에 매우 큰 입력 데이터를 받아 처리하고 결과 데이터를 생성함. 성능 지표: 처리량 (10장) 스트림 처리 (준실시간) - 입력 이벤트가 발생한 직후 데이터를 받아 처리하고 생성함. (11장) 맵리듀스 2번 일괄 처리 알고리즘 "구글을 대규모로 확장 가능하게 만든 알고리즘" 하둡, 카우치DB, 몽고DB 에서 구현됨 더 자세하게 알아보기 전에, 일괄 처리의 아이디어를 준 유닉스 시스템부터 살펴보자 유닉스 철학 유닉스의 데이터 처리 방식 로그 파일 분석 명령어 공백 분리 7번째 문자열을 정렬 → 중복 제거→ 내림 차순 정.. [9] 일관성과 합의 일관성과 합의: 분산 시스템에서 결함이 나더라도 올바르게 동작하게 할 방법들 내결함성을 지닌 시스템을 구축하는 좋은 방법: 문제를 추상화해라! 트랜잭션 추상화: 트랜잭션이라는 개념으로 인해 원자성, 격리성, 지속성을 보장한다. 합의: 모든 노드가 어떤 것에 동의하게 만들어, 리더가 두 개가 되는 스플릿 브레인 같은 문제를 해결할 수 있다. (후반부에서 합의 알고리즘을 알려줄게) 일관성 보장 최종적 일관성 동시에 DB 노드 두 대를 본다면 두 노드에서 서로 다른 데이터를 볼 가능성이 있다. 근데 시간이 지나면 대부분 최신데이터가 반영이 돼 스스로 같은 값을 반환하게 해소된다. "기다리면 최종적으로 값이 일치하는 일관성을 보장한다" 라는 의미 → 근데 이건 언제까지 기다려야할지 아무도 모르기 때문에 약한 보.. 이전 1 2 3 4 5 6 7 ··· 9 다음