본문 바로가기
728x90
반응형

백엔드11

백엔드에서 성능 최적화를 위한 10가지 팁 백엔드 시스템의 성능 최적화는 사용자 경험에 직접적인 영향을 미치며,성공적인 서비스 운영의 핵심 요소입니다.이 글에서는 데이터베이스 쿼리 최적화, 캐싱 전략, 비동기 처리, 마이크로서비스 아키텍처 등실용적인 성능 개선을 위한 10가지 팁을 소개하겠습니다. 1. 데이터베이스 쿼리 최적화데이터베이스 쿼리는 백엔드 성능에 큰 영향을 미칩니다.쿼리를 최적화하면 애플리케이션의 전체 성능을 크게 향상시킬 수 있습니다.Tip: 복잡한 쿼리를 분해하여 필요한 데이터만 조회하거나, 인덱스를 적절히 설정합니다.코드 예시: 쿼리 최적화 전후 비교-- Before: 전체 테이블을 조회하는 비효율적인 쿼리SELECT * FROM orders WHERE customer_id = 123;-- After: 인덱스를 사용해 최적화한 .. 2024. 10. 14.
Nginx 사용하여 프론트배포 후 백엔드 서버와 연결하기 웹 애플리케이션을 배포할 때 프론트엔드와 백엔드를 효과적으로 연결하는 것은 매우 중요합니다.이 글에서는 Nginx를 사용하여 프론트엔드 애플리케이션을 배포하고,이를 백엔드 서버와 연결하는 방법에 대해 알아보겠습니다.Nginx는 높은 성능과 확장성을 제공하는 웹 서버로,프록시 서버로도 많이 사용됩니다.이를 통해 프론트엔드와 백엔드 간의 원활한 통신을 설정할 수 있습니다.필요한 도구 및 환경 설정Nginx: 웹 서버 및 프록시 서버프론트엔드 애플리케이션: React, Angular, Vue 등백엔드 애플리케이션: Node.js, Spring Boot 등서버 환경: AWS EC2, DigitalOcean 등이 글에서는 AWS EC2를 사용하여 Nginx를 설정하고 프론트엔드와 백엔드 애플리케이션을 배포하는 과.. 2024. 5. 22.
친환경 쇼핑몰 프로젝트 구축하기: 백엔드 상품 관리 기능 구현 - 엔티티, 리파지토리, 서비스와 이미지 저장 방식 적용 (4) 이번에는 백엔드 상품 등록 및 변경 기능을 구현해보겠습니다. 먼저 상품 엔티티를 등록합니다. import javax.persistence.* @Entity @Table(name = "products") data class Product( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, val name: String, val description: String, val price: Float, val imageUrl: String? = null ) 리파지토리 구현 import com.hsproject.envmarket.products.Product import org.springframework.data.jpa.re.. 2023. 6. 26.
친환경 쇼핑몰 프로젝트 구축하기: 스프링 부트와 JWT를 활용한 회원가입 및 로그인 기능 구현 - 보안 설정 및 인증 과정 개요 (2) 백엔드 회원가입 및 로그인 기능을 구현해보겠습니다. 자바 17, 스프링부트, 그래들, 코틀린, postgres, 스프링 security를 사용합니다. 가장 먼저 저는 사용자보안으로 jwt 를 사용할겁니다. import com.hsproject.envmarket.oauth.RoleName import com.hsproject.envmarket.util.JwtAuthenticationEntryPoint import com.hsproject.envmarket.util.JwtAuthorizationFilter import lombok.RequiredArgsConstructor import org.springframework.beans.factory.annotation.Autowired import org.spr.. 2023. 6. 26.
코루틴을 활용한 비동기 프로그래밍 기초: 예제를 통한 병렬 작업 이해 및 실행 코루틴은 비동기 프로그래밍을 간편하게 작성하고 관리하기 위한 방법 중 하나입니다. 코루틴은 실행을 멈추고 재개할 수 있는 일종의 경량 스레드라고 볼 수 있습니다. 일반적인 비동기 프로그래밍에서 콜백 혹은 Promise를 사용해야 하는 번거로움을 줄여줍니다. 여기 예시를 통해 코루틴을 사용한 비동기 프로그래밍의 기초를 설명해 드리겠습니다. import kotlinx.coroutines.* fun main() { // 비동기 작업을 위한 코루틴 스코프 생성 val scope = CoroutineScope(Dispatchers.Default) // 코루틴 실행 및 비동기 작업 scope.launch { println("비동기 작업 시작") val result = async { // async는 결과를 반환하는.. 2023. 6. 26.
웹 포트폴리오 마스터하기: 김현승 포트폴리오 개선 방향과 코드 리뷰의 모든 것 안녕하세요 제가 처음 만든 웹포트폴리오 입니다. 제가 구현한 코드를 다시 복습하고 더 발전 시키는 포스트입니다. https://muganghskim.github.io/hskimport/ 김현승 포토폴리오 소개 페이지 어메스 커피 - 개발기간 : 약 2주 - 개발인원 : 본인 - 작업 기여도 : 100% - 주요특징 : 가상의 커피 전문점 웹사이트 구현, passport.js 통한 로그인 기능, 반응형 구현 - js : AOS,스와이퍼,isotop 라이브러 muganghskim.github.io 코드 리뷰 및 todo list를 작성하여 발전시켜 봅시다~ 감사합니다. 2023. 3. 10.
자바 기초 프로그래밍 - Java 사용자 정의 함수 작성 방법: 제곱 함수 예제와 설명 다음은 Java로 된 사용자 정의 함수의 예입니다. public class CustomFunctionExample { public static int square(int x) { return x * x; } public static void main(String[] args) { int result = square(5); System.out.println("The result is: " + result); } } 함수 square는 public static int square(int x) 라인으로 선언됩니다 'public' 키워드는 클래스 외부에서 함수에 액세스할 수 있음을 의미합니다. 'static' 키워드는 함수가 클래스의 특정 인스턴스가 아니라 클래스에 속함을 의미합니다. 함수의 반환 유형은 int.. 2023. 2. 14.
자바 기초 프로그래밍 - Java 기본 입출력(input & output) 이해하기: Scanner 사용법과 사용자 입력 처리 예제 다음의 java 예제를 통해 기본 입출력에 대해서 알아보자. import java.util.Scanner; public class InputOutputExample { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter your name: "); String name = sc.nextLine(); System.out.print("Enter your age: "); int age = sc.nextInt(); System.out.println("Hi, " + name + ". You are " + age + " years old."); } } 1. import java.util... 2023. 2. 14.
자바 기초 프로그래밍 - Java 루프와 조건문 마스터하기: for, while, do-while, if-else, switch 사용법과 차이점 Java에서 루프 및 조건문은 다른 프로그래밍 언어와 유사합니다. 그러나 Java에서 이러한 구문의 구문 및 사용법에는 몇 가지 차이점이 있습니다. 주요 차이점은 다음과 같습니다. 1. for 루프: Java에서 for 루프는 다른 언어와 비교하여 약간 다른 구문을 사용합니다. Java에서 for 루프의 구문은 다음과 같습니다. for (initialization; condition; iteration) { // code to be executed } 여기서 initialization은 루프 제어 변수의 초기 값이고, condition은 루프가 계속 실행되어야 하는지 여부를 결정하는 부울 식이며, 각 반복 후에 iteration 루프 제어 변수의 값을 업데이트하는 명령문입니다. 2. while 루프: J.. 2023. 2. 14.
자바 기초 프로그래밍 - Java 연산자(Operator) 이해하기: 산술, 관계, 논리, 할당, 비트 연산자 및 instanceof 사용법 연산자는 결과를 생성하기 위해 하나 이상의 피연산자(값 또는 변수)에 대해 연산을 수행하는 프로그래밍의 기호 또는 토큰입니다. Java에는 다음과 같은 여러 유형의 연산자가 있습니다. - 산술 연산자: 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 및 모듈러스(%)와 같은 수학 연산을 수행합니다. - 관계 연산자: 두 피연산자를 비교하고 같음(==), 같지 않음(!=), 보다 큼(>), 보다 작음(=)과 같은 부울 결과를 생성합니다. ), 작거나 같음(>>)와 같은 비트 수준 연산을 수행합니다. - Instanceof 연산자: 이 연산자는 객체가 특정 클래스의 인스턴스인지 또는 인터페이스 구현인지를 결정합니다. 다음은 비트 연산자와 instanceof 연산자에 대해 자세히 알아 보겠습니다. AND.. 2023. 2. 13.
728x90
반응형