전체 글 77

MSA 아키텍처 설계해보기🔧

이 글은 알파코에서 진행되는 [신한투자증권] 프로디지털아카데미 과정 중, 김송아 강사님과 함께하는 '파이널 프로젝트'를 기반으로 작성되었습니다. 0. MSA vs 모놀리식아키텍처 설계를 시작할 때, "하나의 서버에 모든 기능을 담을 것인가, 아니면 역할을 분리할 것인가?" 에 대한 고민을 하게 된다. 그래서 먼저 모놀리식 아키텍처와 MSA의 차이에 대해 알아보고자 했다. 1. 두 아키텍처의 기본 개념모놀리식 (Monolithic Architecture)모든 기능이 하나의 서버 안에서 통합적으로 실행하는 구조예시: 하나의 스프링 부트 프로젝트 안에 모든 API와 로직이 들어 있음특징: 단일 빌드, 단일 배포, 단일 DB 구조MSA(Microservice Architecture)기능 단위를 서로 다..

패키지 구조 어떻게 짰나요?

패키지 구조 어떻게 짰나요?프로젝트를 하다 보면, 확장성을 고려해서 패키지 구조를 세분화하거나, 추상화를 도입하게 되는 경우가 많다. 특히 백엔드에서는 기능별로 책임을 분리하고, 향후 기능 추가를 대비해 모듈화하는 것이 좋은 습관처럼 여겨지곤 한다.하지만 면접에서 “패키지 구조 왜 그렇게 짰나요?”라는 질문을 받는다면, 단순히 “확장을 위해서요”라고만 답하긴 어렵다. 왜냐하면 확장만을 위해 구조를 설계했는데 실제로는 사용되지 않거나 오히려 복잡해졌다면, 그것은 오버 엔지니어링이 될 수 있기 때문이다. 실제로 나도 의도적으로 기능을 나누고 설계를 했지만, 결과적으로는 사용되지 않거나 불필요하게 복잡해졌던 경험이 있다. 이런 상황에서 중요한 건 ‘현재의 필요’와 ‘미래의 가능성’을 어떻게 균형 있게 판단했느..

실무에서는 주로 어떤 SQL 문법을 사용하게 될까요 ?

6. 윈도우 함수 1) 윈도우 함수 window 는 말 그대로 창을 의미한다, 계산을 적용할 데이터의 범위를 의미한다 2) 순위 함수 RANK 와 DENSE_RANK 의 차이를 알아둬야 한다 !ROW_NUMBER 의 경우 값이 같아도 무조건 고유한 번호가 매겨지는데, 이는 DBMS 실행 계획에 따라 달라진다 7) 윈도우 집계 함수 기본 문법 이걸 잘 알아둬야 한다 !!! 8) SUM 함수 예제 SUM(SALARY) OVER (PARTITION BY DEPARTMENT_ID): DEPARTMENT_ID별로 합계는 그룹별로 계산하지만, 행은 그대로 유지한다 = 하나로 축약되지 않는다 차이GROUP BY 를 사용할 경우, 같은 DEPARTMENT_ID를 가진 행들을 하나로 묶어 집계해서 행 수가 줄어..

SQL 고급자 되어보기 ⁉️

3. SQL 고급 1. 서브쿼리 2) 서브쿼리 분류실무에서 가장 많이 사용하는 건 위치에 따른 분류라고 한다스칼라 서브쿼리는 select 절에서 컬럼 대용으로, 인라인 뷰는 from 절에서 테이블 대용, 중첩 서브쿼리는 where, having 조건절에서 쓰인다 3) 연관 여부에 따른 분류 > 비연관 서브쿼리, 연관 서브쿼리비연관 서브쿼리는 쿼리 자체로 실행될 수 있고, 메인쿼리와 서브쿼리 간 상호작용이 없다 연관 서브쿼리 판별법서브쿼리 안에서 부모 쿼리의 컬럼을 참조하면 연관 서브쿼리다 = 부모에 있는 컬럼이 서브 쿼리에도 있는 것이때 서브쿼리를 단독 실행하면 E1과 같은 부모 컬럼이 정의되지 않았다는 에러가 발생한다특징부모 행마다 서브쿼리가 반복 실행되므로, 비연관 서브쿼리보다 실행 부담이 크다이번..

SQL 기초부터 시작하기

2. 모델링 23) 논리 모델 → 물리모델Q. 폭포수 모델에서 인덱스는 언제 생성해야 할까?설계 단계에서 대략적인 스키마를 완성하게 됨, PK, FK 등 기본 키와 참조 무결성 역시 포함인덱스, 파티셔닝, 기존의 테이블을 변경하는 일은 기본적으로 위험하다: 이미 데이터가 많이 쌓였고 사용자가 사용하는 상태이기 때문에 영향도 파악을 완벽하게 해야 함, 변경으로 인한 문제가 생길 가능성이 있음인덱싱은 검색 속도를 높이기 위해 설정하는 것이기 떄문에, 하나의 쿼리에만 활용할 수 있도록 하면 안 된다, 시스템 내에서 어떤 쿼리들이 조회가 되고 있는지가 취합되어야 하는데 이게 되려면 개발은 마무리 단계가 되어야 한다 + 데이터 마이그레이션 고려그렇다면 ? → 인덱스와 파티셔닝은 서비스 개발이 마무리되고 실제 쿼리..

관계형 데이터베이스가 처음이라면 ERD 부터 만들어봅시다 !

드디어 리액트 프로젝트가 모두 끝나고 새로운 수업이 시작됐다 !!!SQL 은 이해만 하고 있으면 잘 풀 수 있지 않을까 하고 쉽게 생각했었는데, 나중에 조인과 서브 쿼리한테 두들겨 맞았다^-^오늘은 첫 날이라 간단한 ERD를 구성하는 수업으로 진행되었다. 1. 관계형 데이터 베이스와 모델링2. 모델링 2) 모델링 주요 개념개체(엔터티, Entity): 데이터베이스에서 관리하려는 대상 → 테이블로 구현됨예: 고객(Customer), 제품(Product), 주문(Order)속성(Attribute): 엔터티의 세부정보 → 컬럼에 해당예: 고객 엔터티의 이름, 이메일, 연락처관계(Relationship): 엔터티 간의 연결 → 외래 키로 구현예: 고객이 주문을 한다(Customer - Order)키(Key)..

React 프론트 프로젝트 완. 료.

0. 프로젝트 시작 프로젝트는 4명이 한 팀으로 구성되어 약 4주간 진행됐다. 기획부터 개발, 배포, 발표까지 꽤 많은 범위를 다루었는데, 특히 기획 단계에서 어떤 주제를 가져가야 할지 오랜 고민의 시간을 보냈다. 팀원 모두가 컴퓨터를 전공한 사람들이어서 금융에 대한 깊은 지식이 없었고, 투자도 아주 얕게만 하고 있는 수준이어서 현재 논의 중인 주제가 정말 의미가 있는가- 에 대한 토의가 계속 이루어졌다. 실제로도 여러 번 주제를 엎어서, 다른 팀들이 기능 명세나 ERD 를 작성하기 시작할 때도 우리는 기획에만 매달리고 있었다 .. 으악 1. 아이디어 기획 결국 평일 이틀 내내 아무 결론을 내리지 못하고 주말동안 더 디벨롭 해오자 ! 하고 헤어졌는데, 주말동안 다들 열심히 새로운 기획 + 원래의 기획..

React 미니 프로젝트 완. 료.

회고 작성해야지 생각하고 행동으로는 옮기지 못했던 지난 주 .. 이번 주말에 안 하면 절대 못 하겠다!!! 싶어서 리드미도 우다다 정리해서 커밋하고 이제 정말로 회고다운 회고를 해보고자 작성 창을 열었는데 ! 기억이 잘 나지 않는 이슈가 있지만 ! 노션을 열심히 작성해뒀으니 뒤적뒤적 하면서 써봐야겠다 ! 0. 프로젝트 시작우리 팀은 4명으로 구성되어 있고 개발 기간은 딱 일주일이었다. 기간이 짧았기에 기획 단계에서 어떤 주제를 얼마만큼의 볼륨으로 가져갈지 정하는 게 중요했다.이번 프로젝트의 목표는 지금까지 배웠던 프론트엔드 지식을 바탕으로 작은 서비스를 직접 기획하고 개발하는 것이다. 학습 자체에도 목적이 있었기 때문에 백과 프론트로 역할을 나누기보다는, 한 사람이 전체 개발 과정을 vertical 하..

React 서버 컴포넌트, 클라이언트 컴포넌트 뿌시기💣

지난 시간 내용 복습✨지난 시간에 배웠던 걸 다시 정리해보면 .. 아래와 같이 정리할 수 있을 것 같다 ! 서버 컴포넌트 하위에는 클라이언트 컴포넌트, 서버 컴포넌트 모두 구성 가능클라이언트 컴포넌트 하위에는 클라이언트 컴포넌트만 구성 가능서버 컴포넌트만 async, await 사용 가능클라이언트 컴포넌트 내부에서만 useState, useEffect 등의 hook 사용 가능 4. React Server Component와 React Client Component 1) RSC (React Server Component) 와 Component실습)1. /components/blocks/PostList 폴더 생성2. index.ts, PostList.client.jsx, PostList.jsx 파일 생성3..

Next.js App Router, 서버 컴포넌트와 클라이언트 컴포넌트 알아보기

9. Next.js1. Netxt.js 란 1) 전통적인 웹 (요청에 대한 응답이 항상 HTML)전통적인 웹에서는 사용자가 페이지를 요청할 때마다 서버가 전체 HTML 을 새로 생성해서 전달했다.문제점 : 같은 레이아웃을 공유하는 페이지도 전체 HTML 이 다시 생성되므로 불필요한 중복이 많음기존의 페이지를 새로 요청하므로 사용자는 동일한 내용을 다시 받고, 서버는 같은 페이지를 매번 새로 렌더링해서 리소스가 낭비됨 2) SSR(Server Side Rendering) 그래서 SSR 등장!React 를 서버에서 실행해서 HTML 을 렌더링해서 응답한다. 요청마다 HTML 을 새로 생성한다는 점에서는 전통적인 웹과 같지만, 그 HTML 에는 React 앱이 포함되어 있어서 첫 화면 이후에는 클라이언트에서..