운영 중인 PostgreSQL에 인덱스를 추가하며 배운 것들 상황 DB 에서 데이터를 특정 조건으로 검색하거나 조회할 때 인덱싱이 중요하다는 건 익히 알고 있었다.최초의 요구사항이나 기획단에서 염두해서 신중하게 중복값과 의미가 있는지 여부를 고민하여 유저(학생) 이름에 Index를 넣어두었다. 문제예상과 달리 새로운 요구사항 (사용자 통합 검색 기능)의 들어와 개발 작업에 착수했다. 이름뿐 아니라 학년, 연락처, 아이디 등 다양한 조건으로 쿼리를 사용해야 했다. 이로 인해 기존에는 없던 인덱스를 새로 추가하는 것이 불가피했다.문제는 이미 서비스가 릴리즈되어 운영 중인 상태였다는 점이다. 대응처음에 그냥 무작정 migration 을 짜면서 자연스레 CREATE INDEX를 작성했다.그런데, 다른 동료가 독..
시간이 꽤 되긴 했지만 여전히 MSA의 붐(?)은 사그러들지 않고 있다.쿠버네티스의 등장으로 이러한 기세는 더 강화되지 줄어들진 않을 것에 분명하다.도대체 MSA가 뭐길래 이렇게 대두되는지 이번 기회에 제대로 정리하는 차원에서 글로 남기고자 한다.MSA를 바로 알기 전에 어떠한 배경에서 이러한 개념이 나오게 되었는지를 알아봐야 한다. Monolithic Architecture (모놀리식 아키텍처) 전통적인 애플리케이션 개발 방식으로, 하나의 큰 코드베이스에 모든 기능을 구현하는 방식이다.쉽게 말해 하나의 프로젝트에 비즈니스 로직, 인터페이스, 데이터 접근 계층 등이 모두 포함되는 걸 말한다. 대부분 개발을 처음 배울 때 이러한 방식으로 프로젝트를 시작하게 된다. 예를 들어 이커머스 웹 서버를 만든다고 ..
현업에 치여 '구현'에 집중하다 보면 어느새 작업 쳐내기에 몰두하고 있는 나 자신을 발견하게 된다.이러한 와중에 잊지 말아야 할 몇 가지 좋은 프로그래밍 원칙에 대해 복기 겸 작성해보았다. DRY (Don’t repeat yourself) - 중복을 피하라동일한 코드를 반복하지 말라는 원칙. 중복은 유지보수를 어렵게 하고 버그를 발생시킬 확률을 높인다.반복되는 코드는 함수, 모듈, 클래스 등으로 추상화한다. KISS (Keep It Simple, Stupid!) – 단순하게 만들어라코드는 최대한 단순하고 명확하게 작성해야 한다는 원칙.복잡한 코드는 이해하기 어렵고, 버그가 발생하기 쉽다. 불필요한 최적화나 과도한 설계는 지양하고 가독성 있는 코드를 작성한다. YAGNI (You Aren’t Gonna N..
쿠버네티스와 관리형 서비스쿠버네티스 기본 역할- pod 생성, 모니터링 및 교체, 스케일링 등 pod 내부의 컨테이너들을 오케스트레이션- 워커 노드 간에 컨테이너를 이동하며 애플리케이션을 관리하는 도구이자 프레임워크 쿠버네티스의 충족 조건- 클러스터와 노드(워커, 마스터 노드) 생성: 물리 머신 자체 관리- API 서버, kubelte, 노드의 서비스들 세팅- 다른 클라우드 프로바이저 리소스 생성 (예. 로드 밸런서, 파일시스템 등) 따라서,실제 애플리케이션에 필요한 리소스 관리는 직접 하거나, 관리형 서비스 (예. EKS, Kubermatic 등) 을 사용해야 함 로컬에서 쿠버네티스 설치하기minikube# minikube (mac OS 기준)minikube startminikube dashboard..
*개인의 경험에 근거하여 작성하였음을 미리 고지함작게는 취준할 때의 팀프로젝트에서 크게는 회사 프로젝트까지 다양한 상황에서 선택을 할 수 밖에 없다.내가 겪었던 경험들을 바탕으로 느낀 점을 작성해보았다. 당연한 이야기일 수 있겠지만, 처음 개발을 시작하거나 팀 프로젝트를 했을 때를 기준으로 설명해본다.1. 기술 선정라이브러리, 프레임워크, 언어 등 선택지가 많아서 초기 가이드가 없다면 시간이 오래 걸릴 수 있다.팀이라면 참여 인원의 기술 숙련도를 파악한다. 기한 내 빠르게 구현해야 한다면 가장 널리 쓰이는 기술은 선택하는 것이 유리하다. 오래된 기술은 그만큼 트러블슈팅 자료가 많고 LLM의 답변도 충분히 신뢰할 수 있다. (당연히 팩트체크하기도 용이하다.)신기술을 쓰고 싶은 마음은 이해하나 정해진 마감일..