Backend
[Springboot] save() 메소드
사실 백엔드 단위 테스트 코드를 작성하기 위해서 코드의 전체적인 흐름?을 보던 중에 save() 메소드를 사용하는 로직을 보았다.그래서 이름이 'save'이니까 데이터를 저장하는 역할이겠구나라고 생각하면서 이해를 했는데, 백엔드 개발자분의 설명을 들어보니까 단순히 저장하는게 아니라는 것을 알게 되었다. 이름은 save이지만 저장을 상황에 따라 다르게한다. 즉 다르게 말하자면 만약 기존에 없던 새 데이터라면 INSERT를 실행하고, 기존 데이터가 존재해서 수정하는거라면 UPDATE를 실행하여 DB에다가 저장한다. 그럼 얘 입장에서는 이걸 어떻게 구분하냐면바로 엔터티의 ID 즉, PK로 판단한다. => 즉 save는 create & update를 둘 다 담당하는 Upsert 개념이라고 보면 된다. 나름 어..
[인프라] Auto-Scaling 오토스테일링 개념 간단하게 찍먹하자
서버의 트래픽이 많아지면 자동으로 서버 (즉, 인스턴스)를 여러 개 늘리고, 반대로 줄면 알아서 줄어주는 기능.이때 서버를 늘리는 것을 Scale Out, 축소시키는 걸 Scale In이라고 한다. 이걸 하는 이유는 갑자기 사용자가 늘어 트래픽이 많아지는걸 대응할 수 있어서 성능은 유지되고 또한 필요 없을때는 알아서 scale in하기에 비용도 아낄 수가 있다. 언제 가장 많이 사용한다면 예를 들어 티켓 예매 서비스가 있다면, 새벽 시간대에는 사람이 거의 접속하지 않기에 굳이 서버 여러 개 필요 없고, 예매 시간일때는 한꺼번에 사용자들이 몰리기 때문에 이때 서버 다운 위험이 있기에 서버 여러 개가 필요하다. 이런식으로 유동적으로 관리하면서 낭비 없이 서버 유지비를 최소한으로 사용 할 수 있도록 한다. ..
프론트엔드 개발자인 입장에서 계층형 아키텍처 파헤쳐보기
회사에서 백엔드 코드를 살펴보면서,,,서버 개발을 열심히 알아가려고 하는데요!백엔드에서 기본적인 흐름, 즉 폴더 구조를 정리하고자 합니다 기본적인 플로우[ Client (브라우저/앱) ] ⇅ HTTP/JSON[ Controller ] ─ 비즈니스 진입지점 (요청/응답 DTO) ⇅[ Service ] ─ 핵심 로직/트랜잭션/도메인 규칙 ⇅[ Repository ] ─ DB 접근(JPA, Query) ⇅[ Entity ] ─ 테이블과 1:1 매핑되는 도메인 모델 Controller클라이언트의 요청 (API 호출) 가장 먼저 받는 부분. API endpoint도 정의하는 곳.즉 프론트엔드에서 router와 비슷한 역할. Service비즈니스..
마이크로서비스 Microservice 아키텍처란? (Monolithic와의 차이)
안녕하세요, 이번에 인턴 생활하면서 프론트엔드 위주로 공부했던 제가 좋은 기회로 백엔드에 대해 더 배우게 되었는데요!특히 백엔드가 전반적으로 어떻게 돌아가는지 큰 틀과 원리를 이해하다가 마이크로서비스 아키텍처라는 개념을 알게 되었습니다. 저는 특히나 지금까지 동아리나 대외활동에서 한 프로젝트들은 하나의 애플리케이션/서비스 = 하나의 DB로 관리하는 걸로만 알고 있었고, 백엔드 개발자 분들도 이 방법으로 설계하고 개발했었습니다. 이제 막 배우는 단계라 구체적이고 100프로 정확하지 않을 수도 있지만, 제가 배운거 토대로 정리하려고 합니다! Microservice Architecture작은 서비스 여러개가 모여서 하나의 시스템을 제공하는 아키텍처.database per service라고도 한다. 즉, 예를 ..