본문 바로가기

전체 글74

Internal package in golang Golang을 이용해서 개발하다가 흥미로운 개념을 발견했다. v1.4부터 추가된 개념으로, internal package라는 개념이다. 공식 홈페이지에 release 노트를 보면 다음과 같이 설명되어 있다. Internal packages Go's package system makes it easy to structure programs into components with clean boundaries, but there are only two forms of access: local (unexported) and global (exported). Sometimes one wishes to have components that are not exported, for instance to avoid ac.. 2023. 9. 3.
http2와 http3 HTTP HTTP는 HTML 문서와 같은 리소스를 가지고 올 수 있는 프로토콜 개별 메세지에 대해 클라이언트에서 서버에 request를 보내면 서버에서 response를 보내는 방식으로 구성 HTTP는 애플리케이션 계층의 최상단에 위치 HTTP 0.9 http 초기 버전에는 버전 번호가 없었음 GET 메소드만 존재 헤더 X, 상태나 오류 코드 X HTML 파일만 전송 가능 HTTP 1.0 1996년 11월에 공개 GET 요청에 HTTP/1.0 버전 정보가 같이 전송 GET, HEAD, POST 메소드 사용 가능 상태 코드 포함 헤더 개념 포함 Content-Type을 이용, HTML 파일 외의 파일도 전송 가능 HTTP 1.1 1997년 초에 공개 GET, HEAD, POST, OPTION, PUT, D.. 2023. 7. 26.
Go 언어를 활용한 분산 서비스 개발 프로토콜 버퍼 장점 type safety 보장 스키마 위반 방지 보일러플레이트 코드 감소: 인코딩/디코딩 메소드가 자동으로 만들어진다. 빠른 직렬화: JSON보다 직렬화가 6배나 빠르다. 하위 호환성 제공 → 마이크로서비스 같은 두 시스템 사이에서 통신하기 좋다. 로그 추가만 할 수 있는 레코드의 연속 순서가 있는 데이터를 저장, 공유, 처리할 때 사용 데이터베이스 복제, 분산 서비스 조율, 애플리케이션 상태 관리 등에 사용한다. 원리 여러 개의 세그먼트로 나눔: 무한한 용량의 디스크는 없기 때문 세그먼트: 저장 파일(store file) + 인덱스 파일(index file) 저장 파일: 레코드 데이터 저장 인덱스 파일: 레코드들의 인덱스를 메모리 맵 파일로 만들어 메모리 데이터를 다루는 속도로 빠르게 .. 2023. 7. 23.
헤드퍼스트 디자인패턴 디자인 패턴 패턴은 특정 컨텍스트 내에서 주어진 문제의 해결책이다. 패턴은 반복적으로 등장하는 문제에 적용할 수 있어야 한다. 디자인 패턴은 개발자 사이에서 서로 모두 이해할 수 있는 용어를 제공한다. 간단한 단어로 많은 얘기를 할 수 있게 된다. 꼭 필요하지 않은 패턴은 빼버린다. 객체지향 원칙 바뀌는 부분은 캡슐화하자. 상속보다는 구성(composition)을 활용하자. 인터페이스에 집중하자. 클래스는 확장에는 열려 있어야 하지만 변경에는 닫혀 있어야 한다. (OCP) 의존성 뒤집기 원칙: 구체적인 클래스에 의존하지 않고 추상적인 것에 의존하자. 변수에 구상 클래스의 레퍼런스를 저장하지 않아야 한다. 구상 클래스에서 유도하지 않고, 인터페이스나 추상 클래스에서 유도하자. 베이스 클래스에 구현되어 있는.. 2023. 7. 19.