본문 바로가기

분류 전체보기

(192)
해커톤을 준비하며 해커톤 준비에 임한 지 약 일주일이 지났다. 팀원들끼리 많은 회의를 진행하며 거듭해서 아키텍처 개선안에 대해 논의하고 있는 요즘이다. 종강 후 AWS SAA를 준비하고 있었기에 현재 진행 중인 인프라 설계에 조금 더 수월했던 것 같다.   물론 진행하며 답답함을 겪는 일도 많았는데, 가장 답답한 점은 인프라 설계에 명확한 정답은 없다는 점. 끊임없이 수정하고 수정해도 완벽한 정답인지 우리끼리 결론내릴 수 없다는 점이다. 이 점이 어쩌면 현재하는 작업이 매력적으로 느껴지기도 하는 이유일 것이다. 갈피를 잡을 수 있도록 멘토님께서는 특정한 서비스에 대해 말씀해주시기 보단, 스스로 생각할 수 있도록 유도하는 피드백을 많이 해주시는데 아마 끊임없이 사고하는 과정에서 많은 것을 배울 수 있을 것이라 생각하시기 때..
대규모 시스템 설계 기초(12장 발췌독) 위 책에서는 페이스북 메신저와 유사한 채팅 앱을 설계하고자 함 요구 사항은 다음과 같다  - 1:1채팅, 그룹 채팅 앱 둘다 지원 - 모바일 앱, 웹 앱 둘 다 지원 - DAU(Daily Active User) 기준으로 5천만명 처리 가능- 그룹 채팅 최대 100명- 1:1 채팅, 그룹 채팅, 사용자 접속상태 표시, 텍스트 메시지만 주고 받을 수 있다 - 메시지 길이에 제한 : 100,000 자 이하- 채팅 이력은 영원히 보관- 응답지연이 낮은 일대일 채팅 기능- 최대 100명까지 참여할 수 있는 그룹 채팅 기능 - 사용자의 접속상태 표시 기능- 다양한 단말 지원, 하나의 계정으로 여러 단말에 동시 접속 지원- 푸시 알림  채팅 서비스는 아래 기능을 제공해야 한다 - 클라이언트들로부터 메시지 수신- 메시..
1차 회의를 마치며 1차 회의를 마친 뒤, 먼저 감사한 마음이 들었다. ACC(Amazon Cloud Club)에서 주관하는 좋은 대회에 참여할 수 있음에, 그 대회에서 훌륭한 팀원들을 만난 것 같기 때문이다. 백엔드에서 최근 인프라 및 클라우드에 대한 관심이 생겼었지만 이렇다 할 기회가 없어서 고민이 많은 상황이었는데 이런 좋은 기회에 인프라에 대한 깊은 공부를 할 수 있는 계기가 생긴 것 같아 매우 감사하다. 시작한지 얼마되지 않았지만 관련 케이스 스터디 및 리서치를 진행하며 이전보다 많은 지식들을 배우게 되었다. 앞으로 남은 기간동안에도 적극적으로 참여하여 개인적인 성장과 팀 공동의 목표를 위해 열심히 임할 계획이다. -1차 회고 마침-
C<->어셈블리어 어셈블리↔C C언어 컴파일 과정 전처리기 → 컴파일러 → 어셈블리어 → 링커 test.c → test.exe 전처리기 : test.i 본격적 컴파일 전 준비 외부에 선언된 소스코드, 라이브러리 포함 (include) 매크로 변환(define) 컴파일할 영역 명시 컴파일 전처리가 완료되어도 여전히 소스코드 소스코드를 어셈블리어로 변환 어셈블러 어셈블리어를 기계어(0과1로 표현)로 변환 완료하면 목적 파일(0과1로 이루어짐)이 됨 링킹 각기 다른 목적코드를 하나의 실행파일로 묶어주는 것 컴파일언어 고급언어(소스코드) → 컴파일러 → 저급언어(목적코드) https://www.youtube.com/watch?v=B8TDaBp3UWo GCC C 컴파일러는 기계어 코 드를 문자로 표시한 어셈블리 코드의 형태로 출력..
Week3/4 LinkedList 저장할 데이터는 data 변수, reference 데이터는 다음 연결한 노드를 가리키는 데이터(포인터) 삽입 시 연결되는 링크만 바꿔주면 되기 때문에 매우 편리함 Search public Node search(int index){ if(index=size){ throw new Exception } Node x= head; for(int i=0; isize || index
Week1/2 1주차 ADT란? 추상자료형 순수하게 기능이 무엇인지 나열함 ex) 자동차라는 ADT가 존재한다면, 바퀴, 문, 핸들이 ADT의 내부 속성(Characters)→클래스 내부 필드와 그 의미가 동일 ex) 운전을 하다, 시동을 키다 등이 ADT의 연산(Operations) - 내부 구현을 하지 않음 즉 자료구조에서 ADT란 내부 속성과, 연산을 정의 UML이란? Undefined Modeling Language 코딩하기 전 계획을 디자인 혹은 시각화 한 것(필요한 변수, 함수 등을 정하는 과정 3가지 종류(OOA - 객체지향 분석, OOD-객체지향 디자인, OOP-객체지향 프로그래밍) 추상클래스 추상 메서드를 선언해놓고 상속을 통해 자식 클래스에서 메서드를 완성하도록 유도 미완성 설계도라 표현하기도 함 상..
DB replication 사용이유 DataBase 안정성을 위해 사용됩니다 리플리카 서버는 아주 약간의 딜레이가 있지만 거의 실시간으로 마스터 서버와 동일한 데이터를 가지고 있기 때문에 장애 복구 시 데이터 소실이 최소화됩니다. 특징 리플리카 서버는 마스터 서버로 승격이 가능하기에 마스터 서버로 승격시켜 기존 마스터 서버를 대체하는 방식으로 복구가 진행됩니다 복제서버인 리플리카는 기본적으로 읽기 전용입니다 마스터 서버는 SQl 명령을 수신하면 그 SQL 명령을 리플리카 서버에도 똑같이 보냅니다 그러면 마스터 서버와 리플리카 서버의 데이터가 동일한 상태로 유지합니다 MySQL의 Replication은 기본적으로 비동기 복제 방식을 사용하고 있습니다. Master 노드에서 변경되는 데이터에 대한 이력을 로그에 기록하면 Relicat..
Swagger을 통해 OpenAPI 문서화하기 OAS에 대해 알아보기 OAS에 대해 알기 전 선행되어야 하는 개념들이 있다 REST Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것 HTTP Method를 통해 CRUD Operation을 적용하는 것을 의미한다 EX) DB의 게시글 정보가 자원일 때, posts로 표현함 RESTful API란? REST 기반으로 서비스 API를 구현한 것 기본 규칙 resource는 동사보다는 명사를, 대문자보다는 소문자를 사용한다 resource의 도큐먼트 이름으로는 단수 명사를 사용해야 한다 resource의 컬렉션 이름으로는 복수 명사를 사용해야 한다 resource의 스토어 이름으로는 복수 명사를 사용해야 한다 자원에 대한 행위..