본문 바로가기

Lecture32

디자인 패턴을 배워야 하는 이유, 객체지향 설계와 SOLID, 클래스 다이어그램 디자인 패턴에 대해 알아보자. 디자인 패턴이 생겨난 이유 - 소프트웨어를 재사용할 수 있고, 유연하고 확장성 있고, 유지 보수 만들기는 어려운 일이다. - 실제 개발보다 유지 보수하는데 더많은 시간과 노력이 들어간다. - 아무리 뛰어난 사람이 만들어도 수정은 반드시 필요하게 된다! 일반적 사용! - 좋은 설계에 대한 제안 - 커뮤니케이션에.. 2023. 7. 5.
대규모 서비스에서 발생하는 데이터 처리, 백엔드 엔지니어링의 역할과 범위 패스트 캠퍼스(The Red: 4천만 MAU를 지탱하는 서비스 설계와 데이터 처리 기술 by 카카오페이지 기술전략이사 윤진석) 필기록입니다. 데이터의 개념과 종류에 대한 이해 Datum -> Data -> information 각각의 데이터들이 관계로 연결되면 정보가 된다. (20년 크리스마스는 영하 12도로 추웠다.) 데이터는 크게 양적, 질적으로 나뉠 수 있다. 양적인 데이터는 다시 이산형과 연속형으로 나뉠 수 있고, 질적 데이터는 명목형과 순서형으로 나뉜다. 인터넷에서 수집되는 데이터는 다음과 같이 구분할 수 있다. 암묵적으로 제공되는 데이터가 많다. -> 비정형 데이터 시계열 정보가 더해질 수 있다. 시스템로그와 유저로그로도 나눌 수 있다. 시스템 로그 : Server Log, Client Log.. 2023. 7. 4.
데이터 모델과 트랙잭션 디자인 / 개별 프로세스 운영 관리 및 배포 시스템 디자인 패스트 캠퍼스(The Red: 4천만 MAU를 지탱하는 서비스 설계와 데이터 처리 기술 by 카카오페이지 기술전략이사 윤진석) 필기록입니다. 서버 개발자들은 반드시 영속화 레벨의 데이터에 대해서 문제를 해결하는 일을 마주치게 된다. 논리적 데이터 아키텍처 -> 데이터 스키마 또는 논리적 데이터 모델이라고 함 논리적 데이터 모델은 흔히 (1) 객체 기반의 개체-관계 ER모델 -> Object-based logical models (2) 행 기반의 관계형 모델을 사용 -> Record-based logical models NoSQL 데이터 모델은 모두 (3) nested key value pairs 다차원 모델을 사용한다. -> object도 아니고 record 기반도 아니다 객체지향의 프로그래밍 모델에서는.. 2023. 7. 3.
코드 유지보수성과 확장성을 높이는 디자인 패턴 패스트 캠퍼스 (The Red: 4천만 MAU를 지탱하는 서비스 설계와 데이터 처리 기술 by 카카오페이지 기술전략이사 윤진석) 필기록입니다. 코드레벨에서의 확장성에 대해 알아보자. 프로그래밍 패러다임 절차적 프로그래밍 -> 구조적 프로그래밍 -> 객체지향 프로그래밍 디자인 패턴이란? 베스트 프랙티스(best practice, 모범사례)의 일반화된 디자인 유형 문제를 푸는 것을 패턴화했다고 할 수 있다. 객체 지향 프로그래밍 이후의 점점 복잡해지는 소프트웨어를 해결하기 위해 등장. Object Composition 객 체 합성 구조를 통해 확장성 획득 "Client"는 동기화 서비스인 SyncService 인터페이스만 바라보도록 한다. 환경이나 요구사항에 동기화 메커니즘을 결정할 수 있도록 구체 클래스를.. 2023. 7. 3.
대규모 서비스에서 알고리즘과 자료구조의 중요성 패스트 캠퍼스 (The Red: 4천만 MAU를 지탱하는 서비스 설계와 데이터 처리 기술 by 카카오페이지 기술전략이사 윤진석) 필기록입니다. 이번 세션에서는 서버 레벨이 아닌 코드 레벨에서 확장성에 대해 살펴본다. 다음과 같이 시장의 요구 사항과 사업의 요구사항이 있을 때를 생각해보자. 내 주변 객실을 검색하라라는 문제를 살펴보면 현재의 내 위치 원점에서 -> 각각의 점들 계산 즉, 2차 평면 거리 계산 문제가 된다. int[][] point = {{3,3}, {5,-1}, {-2,4}} 1. 유클리드 거리 계산 2. 원점으로부터 거리 순으로 정렬 3. 상위 k개 출력 유명한 알고리즘 문제인 find K closest points to the origin 코드를 구현해보면 다음과 같이 표현해볼 수 있다.. 2023. 7. 2.