반응형
Golang Convention : Error wrapping vs Opaque error
백엔드/Golang2024. 11. 17. 21:41Golang Convention : Error wrapping vs Opaque error

Golang Convention에서 Error Wrapping과 Opaque Error처리가 서로 충돌이 있는것 같아어떻게 정리를 해야할지를 추가로 정리해봅니다. 1. Opaque Error (불투명한 오류)"Opaque Error"는 오류 발생 지점에 대한 구체적인 정보가 부족하고, 오직 메시지 문자열만으로 전달되는 형태의 오류를 의미합니다. 이는 오류의 원인을 파악하기 어렵게 하며, 코드 디버깅을 어렵게 만드는 주요 원인입니다. 이 관점에서 살펴보면, 원래 예시 코드에서 문제가 되는 부분은 오류의 맥락이 포함되지 않아서, 오류가 어디에서 발생했는지를 쉽게 알 수 없다는 것입니다.func AuthenticateRequest(r *Request) error { err := authenticate(r..

데이터베이스 복제(Replication)란?
CS 지식/데이터베이스 기본 다지기2024. 11. 17. 17:53데이터베이스 복제(Replication)란?

마스터/스탠바이 복제 마스터(Master) 서버:데이터베이스의 원본 데이터를 보유하고 있으며, 모든 쓰기(INSERT, UPDATE, DELETE) 작업이 이 서버에서 이루어집니다.클라이언트는 일반적으로 마스터 서버에 데이터를 변경하기 위한 요청을 보냅니다.스탠바이(Standby) 서버:마스터 서버로부터 데이터를 복제하여 보유하며, 읽기 작업을 수행하거나 장애 발생 시 마스터 역할로 승격(failover)될 수 있습니다.보통 두 가지 유형으로 나뉩니다:핫 스탠바이(Hot Standby): 거의 실시간으로 마스터와 동기화되며, 필요 시 빠르게 마스터로 전환할 수 있습니다.콜드 스탠바이(Cold Standby): 복제는 이루어지지만, 활성화까지 시간이 더 걸릴 수 있습니다.  다중 마스터 복제다중 마스터 복..

데이터베이스 샤딩이란?
카테고리 없음2024. 11. 14. 21:12데이터베이스 샤딩이란?

데이터베이스 샤딩이란 무엇인가?데이터베이스 샤딩(Database Sharding)은 데이터를 여러 개의 작은 데이터베이스로 나누어 관리하는 방법입니다. '샤드(shard)'라는 용어는 '조각'을 의미하며, 데이터를 물리적으로 분산해 성능을 향상시키고 확장성을 제공하는 데 초점을 둡니다. 데이터가 하나의 거대한 데이터베이스에 담겨 있을 때, 저장 용량과 처리 속도가 커지면서 관리가 어려워지고 성능이 저하될 수 있습니다. 이를 해결하기 위해 데이터를 여러 노드로 나누어 효율적으로 저장하고 처리할 수 있게 하는 것이 샤딩입니다.샤딩의 대표적인 장점은 확장성(Scalability)입니다. 데이터 양이 증가할수록 샤드의 개수를 늘려 처리 성능을 개선할 수 있습니다. 또한, 각 샤드가 독립적으로 데이터를 관리하기 ..

데이터베이스 파티셔닝이란?
CS 지식/데이터베이스 기본 다지기2024. 11. 13. 23:26데이터베이스 파티셔닝이란?

파티셔닝이란?수직 파티셔닝 vs 수평 파티셔닝수직 파티셔닝수직 파티셔닝은 테이블을 컬럼 단위로 분할하여 관리, 수평 파티셔닝은 행 단위로 나누어 확장성과 성능을 개선합니다.개념: 테이블의 컬럼을 기준으로 데이터를 분할합니다. 테이블의 특정 컬럼들을 분리하여 별도의 테이블로 만들어, 각 테이블이 전체 데이터의 일부를 갖도록 합니다.장점:데이터를 더 잘 관리하고 보안 수준을 높일 수 있습니다. 예를 들어, 민감한 데이터를 별도 테이블에 두고 접근 권한을 다르게 설정할 수 있습니다.자주 조회되는 컬럼들만 모아서 별도 테이블로 만들면 메모리 사용을 최적화할 수 있습니다.단점:조인 연산이 필요할 수 있어 성능 저하가 발생할 수 있습니다.테이블 간 데이터 일관성을 유지하기 어려울 수 있습니다.사용 예:고객의 개인정..

Golang Convention 중 논의를 해야 할 사항 정리
백엔드/Golang2024. 11. 10. 12:08Golang Convention 중 논의를 해야 할 사항 정리

1. 에러 핸들링Error는 체크하지 않고 gracefully handle한다.Golang에서는 아래와 같이 작성 하는게 자연스러워 보이지만 사실은 불필요합니다.Badfunc AuthenticateRequest(r *Request) error { err := authenticate(r.User) if err != nil { return err } return nil}Goodreturn authenticate(r.User) 오류에 주석을 달아라 (Annotating Errors)github.com/pkg/errors 패키지는 과거에 널리 사용되었지만, Go 1.13부터는 Go 표준 라이브러리에 errors 패키지에 기본적으로 오류..

ADR 도입기 - (3) Docs as code 추가 기능 도입 (Local LLM으로 문서 번역, 문서 페이지 접속 데이터)
업무 개선/Docs as code2024. 10. 15. 23:19ADR 도입기 - (3) Docs as code 추가 기능 도입 (Local LLM으로 문서 번역, 문서 페이지 접속 데이터)

우리 부서에 맞는 ADR (Architecture Decision Record) 템플릿 작성과 ADR 시스템 도입현재 우리 부서 상황에 맞는 ADR 템플릿을 작성해 보려고 합니다.사실은 ADR이 무엇인지, ADR을 써야하는 이유는 무엇인지에 대해서 먼저 쓰고 싶었는데일단 부서내에서 ADR 사용에 대한 의견 제시ray5273.tistory.com ADR 도입기 (1) - ADR 도입에 대한 팀원들의 의견과 피드백이전 포스트에서 부서 내에 ADR을 도입하려는 계획과 설득을 위한 문서를 작성했었습니다. 우리 부서에 맞는 ADR (Architecture Decision Record) 템플릿 작성과 ADR 시스템 도입현재 우리 부서 상황에 맞ray5273.tistory.com  ADR 도입기 - (2) Doc a..

Row Oriented Database vs Column Oriented Database
CS 지식/데이터베이스 기본 다지기2024. 10. 13. 18:55Row Oriented Database vs Column Oriented Database

Row Oriented Database디스크에 테이블이 Rows로 저장됩니다.하나의 IO block read는 테이블에서 여러개의 Rows를 읽어옵니다.특정 Row를 찾으려면 많은 양의 IO가 필요합니다. 예시일반적으로 우리가 사용하는 Row-Oriented Database의 예시입니다.사용자 입장에서는 위와 같이 보일 텐데 이를 실제 디스크에 저장한다면 아래와 같은 예시로 저장될 것입니다.회색은 하나의 block 에 있는 데이터를 의미하고 빨간 세로선 3개로 해당 Row가 끝났음을 명시했습니다. 검색 예시Select first_name from emp where ssn=666을 실행하면 아래와 같이 순서대로 페이지들을 검색합니다.1번 block -> 없음2번 block -> 없음3번 block -> 있..

Transaction 과 ACID
CS 지식/데이터베이스 기본 다지기2024. 10. 6. 20:23Transaction 과 ACID

매번 복습 할 때마다 새롭고 자주 까먹는 영역이 Transacion과 ACID인데요.한번 제대로 정리를 해두고 이를 자주 보면서 까먹지 않기 위해서 글을 써두려고합니다.Transaction 이란?SQL Query의 모음하나의 작업 단위여러 개의 Query가 하나의 작업 단위에 포함 될 수 있습니다. 실제 예제로는 돈을 맡기는 케이스가 있습니다.SELECT, UPDATE, UPDATE 와 같이 3개의 쿼리가 순서대로 필요합니다. 하나의 예시는 아래와 같습니다.계좌 1에서 계좌 2로 돈을 보내는 경우 아래와 같이 Transaction이 동작하죠.Transaction LifespanTransaction BEGIN을 통해서 Transaction을 시작할 수 있습니다.Transaction COMMIT을 통해서 실..

SNI (Server Name Indication)
CS 지식/네트워크 기본 다지기2024. 10. 1. 14:17SNI (Server Name Indication)

SNI(Server Name Indication)는 TLS(Transport Layer Security) 프로토콜의 확장 기능으로, 클라이언트가 서버에 연결할 때 어떤 호스트에 접속하려는지를 미리 서버에 알려주는 역할을 합니다.  1. 문제: 여러 도메인을 하나의 IP 주소에서 호스팅할 때하나의 서버 (12.34.56.78 서버라고 가정하겠습니다)에서 여러 도메인(예: example.com, example.org)을 동일한 IP 주소  (12.34.56.78) 로 호스팅할 수 있습니다. 이 경우, HTTP에서는 Host 헤더를 이용해 클라이언트가 어느 도메인에 접속하려고 하는지 서버에 알릴 수 있기 때문에 문제가 없었습니다. 그러나 HTTPS에서는 클라이언트와 서버가 SSL/TLS 연결을 설정할 때, 암..

UDP와 DNS
CS 지식/네트워크 기본 다지기2024. 9. 30. 23:40UDP와 DNS

UDP (User Datagram Protocol)Layer 4 protocol 입니다.stateless protocol 입니다. (TCP는 stateful protocol) UDP의 구조IPv4의 경우 UDP의 Header는 8 bytes 입니다.포트는 16bit ( 0 ~ 65535)UDP datagram header + data 구조를 가집니다.UDP datagram은 아래와 같이 아주 심플하게 생겼습니다.IP가 안보이는 이유는 Layer가 다르기 때문에 헤더에서는 Port만 취급합니다.Source Port와 Destination Port (각 4bytes), Length와 Checksum (각 4bytes) = 총 8bytes로 UDP Header 가 이루어 져 있고 나머지는 Data로 이루어 져..

반응형
image