병렬처리 혹 다른 표현으로 멀티프로세스 프로그래밍이란 쉽게 이야기하여 하나의 프로그램을 하나의 프로세스가 아닌 여러개의 프로세스를 이용하여 동시에 처리하게 만드는 프로그래밍 기법을 말한다.이렇게 개발하는 이유는 여러 개의 프로세스를 동시에 활용하여 성능을 향상시키기 위
오버로딩은 메소드의 이름은 같고 매개변수의 갯수나 타입이 다른 함수를 정의하는 것을 의미하며, 리턴값만 다르게 갖는 오버로딩은 불가능합니다.오버라이딩은 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의 하는 것을 의미합니다.상속받은 메소드를 그대로 사용할 수
절차지향 프로그래밍(Procedural Programming)은 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 프로그래밍 방법으로, 대표적인 언어로는 C언어가 있다.절차지향 프로그래밍은 컴퓨터의 처리구조와 유사하기 때문에 실행속도가 빠르지만 유지보수가 어렵다
이 둘의 가장 큰 차이점은 "동적인 컨텐츠를 다룰 수 있는가?" 이다.웹서버는 처리할 수 있는 데이터가 html, css, 이미지 등 정적인 데이터로 한정되며, 정적인 데이터가 아닌 동적인 컨텐츠까지도 쓰기 위해서는 WAS가 필요하다.WAS(Web Application
@SpringBootTest은 프로젝트 내부에 있는 스프링 빈을 모두 등록하며, 실제 운영 환경에서 사용되는 클래스들을 통합해서 테스트를 진행한다.따라서 실제 환경과 유사하게 테스트가 가능하다는 장점이 있지만, 모든 빈을 등록하기 때문에 느리고 테스트 단위가 커서 디버
매개변수(Parameter)란 함수의 정의에서 전달받은 인수를 함수 내부로 전달하기 위해 사용하는 변수를 의미하며, 인수(Argument)란 함수를 호출할 때 함수로 전달해주는 값을 말한다.프로세스는 운영체제로 부터 자원을 할당받은 작업의 단위를 말하며, 스레드는 프로
MSA는 하나의 서비스를 만들 때 도메인별로 서비스를 쪼개어 독립적으로 서비스하고, 배포할 수 있도록 구성하는 아키텍쳐이다.MSA는 1개의 시스템을 독립적으로 배포 가능한 각각의 서비스로 분할하며, 각각의 서비스는 API를 통해 데이터를 주고 받으며 1개의 큰 서비스를
실전 프로젝트에서 유저의 이메일로 인증번호를 보내 해당 인증번호를 입력받아 확인하여 회원가입, 비밀번호 변경을 진행했다. 그런데 이메일을 발송하고 완료했다는 응답을 프론트에 보내기까지 평균4~5초 걸리다보니 배포 후 유저가 이용했을 때 메일이 발송이 된건지 안된건지 알
Spring 프레임워크가 제공하는 의존 관계 주입 기능이다.외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있
객체지향 프로그래밍은 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.즉, 상태와 행위를 가진 객체들을 레고 블럭처럼 조립해서 하나의 프로그램을 만드는 것을 객체지향
실전 프로젝트를 진행하며 이미지 업로드 최적화에 대해 고민하게 되었다.이미지를 최대5장까지 함께 등록할 수 있는 게시글 기능을 구현해야 했는데, 유저가 업로드할 이미지의 크기가 제각기 다르다는 점과 고해상도의 이미지를 업로드 했을 때 조회 속도가 느려지는 경우가 있다는
6주간에 걸친 프로젝트가 끝이 났다.프로젝트 도중 디자이너님 이탈, 부팀장 이탈 등으로 프로젝트의 결과물에 아쉬움이 많이 남지만, 그래도 보다 더 성능을 향상시키려 노력했던 기록들을 남겨보려고 한다.기획단계부터 선택과 집중이 정말 중요하다는 것을 이번 실전 프로젝트로
실전프로젝트 3주차가 지났다.비교적 백엔드의 기능 구현이 프론트엔드보다 빠른편이라 우리팀 백엔드는 3주차 스코프에 해당하는 기능을 구현하며 종종 코드리뷰를 진행했다.전체적인 코드 스타일을 맞춰가며 왜 이러한 코드를 썼는지, 왜 이렇게 예외처리를 했는지 등등을 이야기 하
실전 프로젝트를 진행하던 중 점점 코드량이 늘어나고, 프론트에서 API 요청 횟수가 늘어감에 따라 개발중이던 코드에서 에러도 여럿 발생하면서 서버가 터지는 일이 빈번하게 발생하기 시작했다.처음엔 EC2를 중지시켰다가 다시 시작하고 했는데, 서버가 터지는 횟수가 늘어
8주차 회고 드디어 6주간의 실전프로젝트가 시작되었다. 우리팀은 팀리더를 맡은 분께서 힙합을 주제로 진행하고 싶다고 먼저 말을 하셨고, 다같이 회의를 진행하여 그 주제를 가지고 프로젝트를 진행하기로 했다. 힙합에 관련된 공연 정보나, 힙합 크루들 정보같은 건 현재 하
일주일이 지나서 적어보는 7주차 회고...우리조는 채팅 기능을 구현하고 싶어 채팅 기능을 사용하는 서비스들을 위주로 찾아보았다.처음엔 유명하지 않은 실시간 채팅 사이트를 클론코딩 하려고 했으나, 기술 매니저님 피드백을 받아 디스코드를 클론코딩 하기로 결정했다.구현한 것
바쁜 일상에 뒤늦게 적어보는 첫 협업 회고...항해 6주차에는 처음으로 프론트엔드(React) 분들과 협업으로 미니프로젝트를 진행했다.처음 진행하는 협업인만큼 무리하지 않고 기본 CRUD를 구현할 수 있도록 주제를 정했다.우선 커뮤니티 서비스를 구현해보고 싶다는 것은
개발을 진행하다보면 생성자를 통해 객체를 많이 만들게 된다.객체가 가지고 있는 인자들이 많을 경우, 그 인자들이 어떠한 것인지 헷갈리는 경우가 있다.또한 생성자 호출을 위해서 설정하고싶지 않는 매개변수의 값까지 지정해줘야 하는 불편함도 있다.즉, 생성자를 빌더 패턴으로
JPA에서는 프록시 생성을 위해 @NoArgsConstructor를 강제하게 되는데, 이때 AccessLevel을 따로 설정해주지 않으면 외부에서 생성자에 쉽게 접근할 수 있게 된다.유지 보수성을 최대화하고 접근 가능성을 최소화하기 위해 AccessLevel을 PROT
5주차인 주특기 심화주차에는 백엔드끼리 협업하는 팀과제를 진행했다.나만의 블로그 API 만들기라는 주제로 진행했는데, 입문주차와 숙련주차에서 진행한 개인 과제의 연장선이었다.그런데 숙련주차에서 Lv1, Lv2의 과제 중 Lv2의 과제가 선택이었던 터라 팀원별 기능 구현