전체 글
-
로그를 남길 때 고려해봐야 할 것들카테고리 없음 2025. 3. 16. 18:40
아직 개발중인 프로젝트에서 테스트하던 중 서비스가 정상적으로 동작하지 않는다는 이야기를 듣고 이를 확인해보려 했었는데 생각보다 내가 남겼던 로그만으로는 문제를 파악하기 쉽지 않았다. 그 전에도 한번 비슷한 경험이 있어서 나름대로 조치를 취한것이었는데 이번에도 동일한 문제가 생기는 것 같아 좀 아쉬움이 컸다. 다음에는 이런일이 생기지 않도록 로그를 남기는 것에 대해서 좀 더 자세하기 알아보기로 결심했다. 로그 레벨을 적절히 사용하기진행하는 프로젝트의 프로덕션 환경은 기본 로그 레벨을 INFO 로 사용한다. (아마 대부분의 경우 그럴것 같다)물론 로그 레벨은 사용하는 프로그래밍 언어와 프레임워크에 따라 다르겠지만 일반적으로 자주 사용되는 레벨이 있다고 보면 보통 INFO 로 대부분의 로그를 남기고 에러나 예..
-
SQL AntiPatterns - Keyless Entry카테고리 없음 2025. 3. 2. 23:08
관계형 데이터베이스는 테이블 자체에 대한 설정도 중요하지만 테이블 사이의 "관계" 도 중요한 부분을 차지한다."참조 무결성" 은 이런 데이터베이스를 디자인하고 관련된 연산을 수행할 때 핵심적으로 동작해서 이런 부분에 도움을 준다.예를 들어, foreign key 제약을 선언하면 해당 컬럼의 값은 다른 테이블의 primary key 혹은 unique key 로 존재해야 한다는 제약사항을 지킬 수 있도록 도와준다.참조무결성을 사용하지 않는 이유참조 무결성이 도움을 주긴 하지만 몇몇 사람들은 사용을 권하지 않는 경우가 있는데 그 때 언급되는 이유는 다음과 같은 것들이 있다.데이터를 수동으로 갱신할 때 참조 무결성 제약에 위반되는 경우가 있다.성능에 안좋은 영향을 준다.예를 들어 개발 초기 단계에는 스키마에 변..
-
AWS Lambda 살펴보기카테고리 없음 2025. 2. 16. 17:05
serverless 를 활용하려고 하는 환경에서 작성한 코드를 실행하려고 하는 경우 활용할 수 있는 컴퓨팅 자원 중 하나로 AWS Lambda 를 생각해볼 수 있다. 특정 시점에 빠르게 스케일업하고 그 외 사용하지 않는 시점에는 스케일 다운을 해야 하는 경우에 람다 사용을 고려해볼 수 있다. 개발자는 코드만 신경써주게 되면 그 외 메모리, CPU 와 같은 환경은 AWS에서 알아서 관리해주게 된다. Lambda Function코드를 람다로 실행시키려 하면 가장 먼저 마주하는 것은 Function 이다. 람다에서의 Function 은 애플리케이션을 구현하기 위한 하나의 단위로 취급된다. 즉 특정 이벤트에 반응해 실행되는 코드의 일부 조각이다.이벤트가 발생하면 Function 에 설정해놓은 handler 함수..
-
고가용성 정리 [1]카테고리 없음 2025. 2. 2. 18:56
서비스의 고가용성을 유지하기 위해서 대부분의 서비스에서는 여러 대의 서버를 활용하는데 하나의 서버를 활용할때와 다르게 2개 이상의 서버가 존재하는 시점부터는 트래픽을 누가 어떻게 분배할 것인가에 대한 고민이 생기게 된다.이 때 사용하는 것이 로드 밸런서인데 이름에서 알 수 있듯이 트래픽을 균형있게 잘 나누어주는 역할을 담당하게 된다.우선 로드 밸런서를 활용하는 몇 가지 패턴을 확인해보자. 일반적인 로드 밸런싱가장 많이 사용하는 방식은 TCP 기반으로 동작하는 로드 밸런서이다. 클라이언트는 로드 밸런서의 public IP 주소로 연결 요청을 보내고 로드 밸런서는 어떤 서버 인스턴스를 사용할 지 결정한 뒤 해당 요청을 포워딩 해주게 된다. 이 때는 port, protocol 과 같은 기본적인 TCP 정보를 ..
-
SQL AntiPatterns - Primary key카테고리 없음 2025. 1. 19. 18:03
SQL AntiPatterns 라는 책의 내용 중 최근에 관심있게 살펴보았던 Primary Key 관련 내용을 정리해보았다.Primary Keyprimary key 는 테이블의 모든 행에 대해 유일성을 보장해 행이 중복해서 저장되는 것을 방지해주고 특정 행을 유일하게 식별하는데 사용할 수 있다. 또한 외래키에 의해 참조되는 경우도 많기 때문에 굉장히 많은 곳에서 사용되는 제약사항이라고 볼 수 있다. 어떤 컬럼을 PK로 사용할 지에 대한 고민을 해볼 수 있는데 우선 PK가 되기 위해서는 다음 조건을 만족해야 한다.각 행별로 유일한 값을 갖는 컬럼이어야 한다.NOT NULL 제약을 가져야 한다.Natrual Key / Surrogate Key우선 Key 와 관련해 알고 있어야 하는 기본 개념을 잠깐 짚고 넘..
-
2024년 회고카테고리 없음 2025. 1. 5. 14:52
유난히 시간이 빨리 지나간 것 같은 2024년이 지나고 새해가 밝았다.회고를 매년 쓰는 건 아니지만 올해는 그냥 한번 써보고 싶어서 1년동안 가장 기억에 남았던 것들을 주제별로 뽑아서 기록해보려고 한다. 올해의 책2024년은 책을 많이 읽었다고 하기도 어렵고 읽은 책들도 대부분 재테크 관련된 주제가 대부분이었다. 그 중에서 몇 안되는 소설책이었던 프로젝트 헤일메리를 올해의 책으로 뽑아보았다. 내 죽어가는 상상력을 잘 자극해주기 때문에 SF 장르를 좋아하는 편인데 근래 본 SF관련 콘텐츠 중에 가장 흥미로운 내용이었던 것 같다. 스포가 될 수 있으니 대략적으로만 말해보자면 만약 지구에 사는 사람들이 우주에 나가야만 한다면 이런 이유지 않을까? 하는 것과 우주에 나가면 이런 일이 생길수도 있지 않을까? 라고..
-
OAuth 2.0 개념정리 (1)카테고리 없음 2024. 12. 22. 16:27
용어 정리우선 OAuth 에서 자주 등장하는 용어에 대해서 간단하게 정리를 해본다. Confidential Clientclient_secret 값을 기밀로 유지할 수 있는 클라이언트를 말한다. 다른 사람들이 소스코드에 접근할 수 없는 서버사이드의 애플리케이션을 지칭하는 경우가 대부분이다. private github 과 같은 소스코드 저장소를 사용하면 외부에 코드 자체를 노출할 일도 없고 실제 애플리케이션의 산출물 또한 클라우드 환경이나 온프레미스 머신에서 구동되기 때문에 외부 사용자가 접근할 일은 더욱 더 적다. Public Client앞서 본 Confidential Client 와는 반대로 client_secret 값을 기밀로 유지할 수 없는 클라이언트를 말한다.모바일 애플리케이션이나 Javascrip..
-
Kotlin X JPA 사용해보기카테고리 없음 2024. 11. 23. 23:29
JPA 는 Java Persistence API 라는 이름에서도 알 수 있듯이 Java 에서 Persistence layer 에 사용하는 표준 API 를 말한다.Kotlin 도 JVM 진영의 언어이긴 하지만 언어의 특성이 다르기 때문에 사용할 때 주의해야 할 점이 있는 편이다. ORM 을 사용하는 것도 처음이기도 하고 이를 Kotlin 으로 사용하려고 하니 대부분의 문서는 Java 를 기준으로 하기 때문에 보고 따라하면 예상치 못한 결과를 마주하는 경우도 많이 있어서 여러 글들을 찾아보고 나중에 찾아보기 쉽도록 내용을 정리해본다. ORM개발자가 애플리케이션 로직을 작성할 때 주로 객체지향 언어를 사용하고 관계형 데이터베이스에 데이터를 저장하거나 검색할 때는 SQL 문을 사용한다. 관계형 데이터베이스는 테..