분류 전체보기 235

IIS API 요청 실패 및 DB 연결 문제 해결

[서비스 환경]- 프레임 워크: .NET Framework 4.6.1- 데이터베이스: Microsoft SQL Server 2016 (MSSQL 16)- 웹 서버: IIS 서비스 운영 중 특정 시간 이후 모든 API 요청이 무한로딩 상태로 빠지는 현상이 발생했다.문제를 분석한 결과, DB 연결을 적절히 닫아주지 않은 문제로 인해 IIS가 먹통이 되는 상황이었다. 이 포스트에서는 해당 문제의 원인과 해결 방법을 단계적으로 설명한다.    1. 문제 증상서비스가 정상적으로 시작되지만, 약 1시간 후부터 일부 API 요청이 무한 로딩 상태에 빠지며, 연결이 끊어지는 문제가 발생했다. 다만, HTML, CSS, JS와 같은 정적 파일 요청은 정상적으로 처리되었다.즉, API 요청 처리에서 문제가 발생한 것이다...

DB Connection Pool (데이터베이스 연결 풀) 개념

DB Connection Pool은 애플리케이션이 데이터베이스와의 연결(Connection)을 효율적으로 관리하기 위한 기술이다.    1. 왜 Connection Pool이 필요한가?애플리케이션이 데이터베이스와 통신하려면 DB연결이 필요하다. - 매번 새로운 연결을 생성하고 해제하는 것은 성능 저하와 자원 낭비를 초래한다.- 특히, 대량의 요청이 발생하면 연결 생성/해제 오버헤드로 인해 응답속도가 느려지고 시스템 부하가 증가한다. 따라서 Connection Pool을 사용하여 DB 연결을 미리 생성하두고 필요할 때 재사용하여 성능을 향상시킨다.   2. Connection Pool의 동작 방식1. 초기 연결 생성- 애플리케이션이 시작될 떄, 설정된 개수만큼 DB 연결을 생성하여 "풀(Pool)"에 저장..

DataBase 2025.01.25

[ASP.NET MVC5] Action Filter의 개념과 활용

ASP.NET MVC에서 Action Filter는 컨트롤러의 액션 메서드 실행 전후에 특정 작업을 수행할 수 있는 강력한 기능이다. 이번 포스팅에서는 Action Filter의 개념, 주요 기능, 그리고 활용 방법을 간단한 예제와 함께 알아보고자 한다.  1. Action Filter란?Action Filter는 컨트롤러의 액션 메서드 실행 전후에 동작하는 로직을 캡슐화하여 제공하는 특수한 클래스이다.이를 통해 공통 작업을 중앙에서 관리하고 코드의 재사용성을 높일 수 있다.  2. 주요 특징2.1 액션 메서드 실행 전후 작업 관리Action Filter는 다음과 같은 단계에서 작업을 수행할 수 있다:- OnActionExecuting: 액션 메서드가 실행되기 전에 호출된다. (예: 사용자 인증, 요청 ..

Language/ASP.NET 2025.01.12

[ASP.NET MVC5] 페이지별 사용자 접근 권한 확인(Action Filter 활용)

ASP.NET MVC5에서 특정 페이지에 접근 가능한 유저인지 확인하는 기능은 보안과 사용자 경험의 핵싱 요소중 하나이다. 이번 포스팅에서는 ASP.NET MVC5에서 제공하는 사용자의 권한 부여 여부에 따른 페이지 접근을 제어하는 방법을 알아보고자 한다.   1. 데이터베이스 테이블 설계권한 확인을 위해 아래와 같은 테이블 구조를 사용할 수 있다. (예시)CREATE TABLE Users ( UserId INT PRIMARY KEY, UserName NVARCHAR(100));CREATE TABLE PagePermissions ( PageId INT PRIMARY KEY, PageUrl NVARCHAR(200));CREATE TABLE UserPermissions ( UserId INT, ..

Language/ASP.NET 2025.01.12

[웹 애플리케이션 보안] HTTP 응답 헤더에서의 Server 정보 숨기기

1. HTTP 응답 헤더에서의 Server 헤더 웹 애플리케이션의 보안은 다양한 방법으로 강화할 수 있으며, 그중 하나는 HTTP 응답 헤더에서 Server 헤더를 제거하는 것이다.  Server 헤더는 클라이언트에게 서버 소프트웨어 및 버전에 대한 정보를 제공하는 역할을 한다. 이를 제거하면 여러 가지 보안상의 이점을 얻을 수 있다. 다음은 Server 헤더를 제거함으로써 얻을 수 있는 주요 장점들이다.   2. Server 헤더 제거의 이점(1) 서버 정보 노출 최소화Server 헤더에는 웹 서버의 소프트웨어 및 버전 정보가 포함되어 있다. 이 정보는 공격자가 서버의 취약점을 찾는 데 약용될 수 있다. 예를 들어, 특정 버전의 웹 서버가 알려진 보안 취약점을 가지고 있다면, 공격자는 해당 취약점을 이..

Secure 2025.01.05

애자일(Agile) 방법론이란?

소프트웨어 개발 프로젝트에서 "애자일(Agile)" 은 단순한 방법론을 넘어 하나의 문화로 자리 잡고 있다.변화가 빠른 환경에서 고객의 요구를 신속히 반영하고, 팀원 간 협업을 극대화하며 프로젝트를 성공으로 이끄는 데 중요한 역할을 하고 있다.  애자일이 무엇인지, 왜 중요한지, 그리고 어떻게 적용할 수 있는지 알아보자.   애자일이란?애자일(Agile)은 유연하고 반복적인 방시긍로 프로젝트를 관리하는 소프트웨어 개발 방법론이다. 2001년에 발표된 애자일 선언문(Agile Manifesto)에서 네 가지 핵심 가치를 제시하며, 변화에 빠르게 대응하고 고객과의 협력을 강조한다.  애자일의 4가지 핵심 가치:1. 개인과 상호작용을 도구와 프로세스보다 중시한다.2. 작동하는 소프트웨어를 방대한 문서보다 중시..

[JavaScript] JavaScript의 `this` 키워드에 대한 이해

JavaScript에서 this 키워드는 함수나 메서드가 호출되는 컨텍스트에 따라 그 값이 달라진다. 간단히 말해, this는 현재 메서드나 함수가 실행되고 있는 객체를 참조한다. 하지만, 이 값은 코드가 실행되는 위치와 방식에 따라 다르게 동작한다. 이번 포스팅에서는 다양한 상황에서 this가 어떻게 동작하는지 살펴본다.  1. Global Context (전역 컨텍스트)this가 함수 외부에서 사용되면 전역 개체를 참조한다.브라우저 환경에서는 전역 객체가 window이고, Node.js환경에서는 global이다.  예시 (브라우저 환경):console.log(this === window); // true   예시 (Node.js 환경):// 전역 변수 정의global.myGlobalVar = 'Hel..

[Git] 모든 개발자가 알아야 할 18가지 Git 명령어

오늘도 dev.to를 둘러보다가 Git을 필수적으로 사용하는 개발자들에게 유익할 20가지 Git 명령어를 정리한 포스트를 보게 되어, 직접 한글로 번역하여 포스팅하게 되었다. (20가지 중 18가지만 추려서 포스팅하였다.) [원본 포스팅: https://dev.to/jagroop2001/20-git-command-line-tricks-every-developer-should-know-1i21] 20 Git Command-Line Tricks Every Developer Should Know20 Git Command-Line Tricks Every Developer Should Know Git is an essential version control tool for...dev.to  Git은 개발자에게 필..

Git 2024.11.13

ASP.NET에서 데이터 전송 및 상태 관리 방법 비교: ViewBag, Session, TempData..

ASP.NET에서의 데이터 전송 및 상태 관리  웹 애플리케이션을 개발할 때, 여러 페이지 간에 데이터를 전달하거나, 특정 데이터 상태를 유지할 필요가 자주 있다.ASP.NET에서는 이를 위한 다양한 방식이 제공된다. 여기서는 ViewBag, Session, TempData와 그 외의 옵션들에 대해 살펴보고, 각 방법의 특징과 사용 예시를 정리해보고자 한다.      1. ViewBagViewBag은 컨트롤러에서 뷰로 데이터를 전달하기 위한 동적 객체이다.- 생존 범위: 단일 요청 사이클, 같은 페이지 요청에서만 유효하며, 새로고침이나 다른 페이지 요청 시 데이터가 초기화된다.- 사용 예시: 단순히 컨트롤러에서 뷰로 데이터를 전달할 때 유용하다. public ActionResult Index(){ Vie..

Language/ASP.NET 2024.11.02

C#에서 비동기 프로그래밍 이해하기 - Task와 async/await의 활용

await doAsync();...public async void doAsync() {...}public async Task doAsync() {...}  1. Task란?C#에서 Task는 비동기 작업을 나타내는 클래스이다. .NET의 비동기 프로그래밍을 지원하는 핵심 요소 중 하나로, 백그라운드 스레드에서 작업을 수행하거나 I/O 바운드 작업을 비차단 방식으로 처리할 수 있게 도와준다. Task클래스는 다음과 같은 역할을 한다. - 비동기 작업을 표현: 백그라운드에서 실행되는 작업을 나타내며 작업의 시작 및 완료 여부를 추적할 수 있다.- 작업 생명주기 관리: 작업의 상태를 관리하고 완료된 작업의 결과를 반환할 수 있다.- 결과 반환 기능: 작업 결과를 반환해야 하는 경우 Task 형식을 사용하여 비..

Language/C# 2024.10.26
반응형