AOP 가 등장한 배경AOP 란 (Aspect-Oriented Programing) OOP 의 한계를 극복하기 위해 등장한 패러다임입니다. OOP는 대부분의 기능을 캡슐화 할 수 있지만, 중복되는 로직이나 횡단관심사의 경우에는 분리하기 어려운 경우가 많습니다. 더보기횡단관심사횡단 관심사란 소프트웨어 개발에서 여러 계층이나 묘둘에 걸쳐 공통적으로 영향을 미치는 관심사입니다.예로는 로깅, 트랜잭션 관리, 성능 모니터링이 있습니다. 이를 해결하기 위해 AOP 패러다임을 이용해 횡단 관심사를 분리해 OOP 의 장점을 살리고 중복되는 로직을 줄일 수 있게 된 것입니다. 조금 더, 깊게 생각해보면 OOP 의 5대 원칙 중 하나인 SRP 를 위배 한다는 것을 알 수 있습니다. AOP 패러다임을 사용하지 않는다면 ..
머리글스프링을 다루다 보면 스프링의 기본 개념과 어떻게 동작하는지 혼동이 올 때가 있습니다. 오늘 포스팅 게시글에서는 스프링의 주요 개념 (직접 언급 :Spring Context, 간접 언급 : IoC, DI, AOP, POJO) 에 대해 알아보고 정리해보도록 하겠습니다. 스프링 컨텍스트스프링 컨텍스트란 무엇일까요? 스프링은 굉장히 강력한 프레임워크라고 할 수 있습니다. 그렇다면 이 프레임워크는 왜 사용하는걸까요? 하나의 문장으로 정의하자면 " 개발에만 집중할 수 있게 " 라고 정의할 수 있습니다. 이 말인 즉, 필요한 라이브러니나 기술들을 미리 모듈화 해 개발에만 집중할 수 있게끔 만들어진 하나의 뼈대라고 할 수 있습니다. 정의로는 이해가 되었습니다. 하지만, 어떻게 집중할 수 있는데 ? 라는 질문..
Redis 란 레디스 란 Romete Dictionary Server 의 약자 이며, Key-Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템 입니다. 쉽게 말하자면, 데이터 처리속도가 빠른 NoSQL 데이터베이스 입니다. TMI Redis 는 RDBMS 와 비교했을 때 빠른 속도를 장점으로 가지고 있습니다. 이유는 RDBMS 의 경우에는 데이터를 디스크에 저장하지만, Redis 의 경우에는 메모리에 데이터를 저장하게 됩니다. 그러므로 속도면에서 굉장히 빠른 성능을 보여줍니다. 하지만 이에 따른 단점도 분명하기에 궁금하시다면 찾아보시는 것을 추천드립니다.(현대 컴퓨터의 메모리의 용량은 한정적이기 때문입니다. 조만간.. 잡히겠지만..
백엔드 서버 개발을 하다보면 DB 성능에 대해 고민하게 됩니다. SQL 최적화를 데이터 조회의 시간을 단축 시킬 수 있고, 이는 성능향상과 직결되는 부분이 될 것입니다. 오늘은 DB 성능의 개선법과, MySQL 의 아키텍처 그 중 에서도 SQL 튜닝에 대해 알아보도록 하겠습니다. DB 성능 개선의 방법 - SQL 튜닝- 캐싱 서버 활용- 레플리케이션 (Master/Slave)- 샤딩- 스케일 업 DB 성능 개선을 위해서는 다양한 방법을 고려할 수 있습니다. 캐싱 서버 활용, 레플리케이션, 샤딩, 스케일 업의 경우에는 설정 추가 및 비용 추가가 발생할 수 있는 조치 사항입니다.하지만 SQL 튜닝은 시스템 변경 및 비용 추가 없이 성능을 개선할 수 있습니다. MySQL 의 아키텍처- MySQL 의 ..
대부분의 사람들이 코딩테스트를 처음 접한다면, 시간 복잡도에 관한 이야기를 듣게 될 것입니다.시간복잡도를 보고 있으면 괜히 어렵고, 한숨만 나오는 그 기분을 저도 알고 있습니다... 오늘 이 포스팅에서는 시간 복잡도의 개념과 계산 법에 대해 알아보고 앞으로 시간 복잡도에 대해서는 두려움이 없는 개발취준생이 되어보자구요! 가즈아!! 시간복잡도란 ? " 알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 연산의 횟수를 말합니다 " 일반적으로 이 횟수는 1억번의 연산을 1초로 두고 계산합니다. 시간 복잡도는 Big(O) 표기법을 사용합니다. 이 표기법은 최악의 연산횟수를 기준으로 표기하는 방법입니다. 간단한 예시를 들어보자면 100만개의 수를 정렬하고, 시간 제한이 1초인 알고리즘 문제가 있습니다. ..