생성자 - 필요한 이유객체를 생성하는 시점에 어떤 작업을 하고 싶다면 생성자(Constructor)를 이용하면 된다.생성자를 알아보기 전에 먼저 생성자가 왜 필요한지 코드로 간단히 알아보자.public class MemberInit { String name; int age; int grade;}public class MethodInitMain1 { public static void main(String[] args) { MemberInit member1 = new MemberInit(); member1.name = "user1"; member1.age = 15; member1.grade = 90; MemberInit me..
절차 지향 프로그래밍 1 - 시작절차 지향 프로그래밍 vs 객체 지향 프로그래밍 절차 지향 프로그래밍절차 지향 프로그래밍은 이름 그대로 절차를 지향한다. 쉽게 이야기해서 실행 순서를 중요하게 생각하는 방식이다.절차 지향 프로그래밍은 프로그램의 흐름을 순차적으로 따르며 처리하는 방식이다. 즉, "어떻게"를 중심으로 프로그래밍한다. 객체 지향 프로그래밍객체 지향 프로그래밍은 이름 그대로 객체를 지향한다. 쉽게 이야기해서 객체를 중요하게 생각하는 방식이다.객체 지향 프로그래밍은 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍하는 방식이다. 즉, "무엇"을 중심으로 프로그래밍한다. 둘의 중요한 차이절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분리되어 있다. ..
기본형 VS 참조형 1 - 시작자바에서 참조형을 제대로 이해하는 것은 정말 중요하다. 변수의 데이터 타입을 가장 크게 보면 기본형과 참조형으로 분류할 수 있다. 사용하는 값을 변수에 직접 넣을 수 있는 기본형, 그리고 이전에 본 Student student1과 같이 객체가 저장된 메모리의 위치를 가리키는 참조값을 넣을 수 있는 참조형으로 분류할 수 있다.기본형(Primitive Type): int, long, double, boolean처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라 한다.참조형(Reference Type): Student student1, int[] students와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형이라 한다. 참조형은 객체 ..
클래스가 필요한 이유자바 세상은 클래스와 객체로 이루어져 있다. 그만큼 클래스와 객체라는 개념은 중요하다. 우선 클래스와 객체라는 개념이 왜 필요한 지부터 시작해서 클래스가 어떤 방식으로 발전하면서 만들어졌는지 점진적으로 알아보려고 한다. 예시 코드로 이해public class ClassStart1 { public static void main(String[] args) { String student1Name = "학생1"; int student1Age = 15; int student1Grade = 90; String student2Name = "학생2"; int student2Age = 16; int student2Grad..
회사 내 프로젝트의 배포 시간이 긴 문제가 있었다. 이 문제를 다들 쉬쉬하고 있었지만, 이젠 이를 개선하기 위해 작업을 진행하려고 한다. 현재 평균 배포 시간은 대략 8분에서 10분 사이가 걸리고 있다. 배포가 느린 이유배포가 느린 이유는 빌드 속도가 매우 오래 걸렸다. ➜ NestJS를 사용하고 있었는데 ts를 js로 컴파일하는 과정이 매우 오래 걸렸다. 그 문제의 파일은 `filter.ts`로 배포시간이 긴 것만이 문제가 아니라 IDE 툴로 작업을 할 때 이 파일만 들어가거나 수정이 일어나면 IDE가 엄청 느려지고 정신을 못 차렸다... (작업하는데 매우 불편함) 간단하게 `filter.ts`를 보자면,export class typeOfFilter { @IsOptional() @IsString()..
nGrinder 네이버에서 개발한 서버 부하 테스트를 위한 오픈 소스 프로젝트다. 애플리케이션을 개발하고 nGrinder에서 여러 가지 가상 시나리오를 만들어 트래픽이 몰렸을 때 성능을 측정할 수 있도록 도와준다. 부하 테스트 nGrinder nGrinder는 웹 애플리케이션 Controller와 자바 애플리케이션 Agent로 구성되어 있다. nGrinder 설치 https://github.com/naver/ngrinder/releases Releases · naver/ngrinder enterprise level performance testing solution. Contribute to naver/ngrinder development by creating an account on GitHub. gi..
애플리케이션의 성능 모니터링을 위해 다양한 도구를 사용하고 있다. 이번에 도입해 본 Scouter는 LG CNS에서 개발한 APM(Application Performance Monitoring) 도구로, 애플리케이션의 성능을 실시간으로 모니터링하고, 문제를 식별하여 해결하는 데 필수적인 인사이트를 제공한다. Spring Boot: 3.0.11 Java: 17 WAS EC2: t4g.small (vCPU: 2, RAM: 2GB) (AMI: Amazon Linux 2 AMI (HVM)) APM EC2: t2.micro (vCPU: 1, RAM: 1GB) (AMI: Amazon Linux 2 AMI (HVM)) APM EC2 구성 ec2 생성은 다른 글에서도 너무 많이 다뤄서 넘어가겠다. JAVA 8 설치 s..
우선 배치시스템 전체적인 구조를 보자. GitHub - luckkids/luckkids-batch-server: 럭키즈 배치 서버 👨🏻💻🍀럭키즈 배치 서버 👨🏻💻🍀. Contribute to luckkids/luckkids-batch-server development by creating an account on GitHub.github.com Batch와 Scheduler의 차이배치(Batch)는 논리적 또는 물리적으로 관련된 데이터를 그룹화하여 일괄 처리하는 방법을 의미한다. 스케줄러(Scheduler)는 주어진 작업을 미리 정의된 시간에 실행할 수 있게 해주는 도구나 소프트웨어를 의미한다. 여기서 주의할 점은 배치는 대량의 데이터를 일괄적으로 처리할 뿐, 특정 주기마다 자동으로 돌..