분류 전체보기

Spring

스프링 주요 개념(IoC, DI, AOP, PSA)

IoC(제어의 역전) 제어의 역전은 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것을 말한다. 즉, 객체의 생성과 관리를 개발자가 하는 것이 아닌 프레임워크가 대신한다. [클래스 A에서 new 키워드로 클래스 B의 객체 생성] public class A { b = new B(); } [코드에서 객체를 생성하지 않음, 어디선가 받아온 객체를 b에 할당] public class A { private B b; } 다른 곳에서 받아와서 사용한다. 직접 생성하는 것이 아니다. 외부의 객체를 관리하는 주체를 스프링 컨테이너라고 한다. DI(의존성 주입) DI는 어떤 클래스가 다른 클래스에 의존한다는 말이다. public class A { @Autowired B b; }..

개발/AWS

AWS Lambda

서버리스 컴퓨팅 서비스 서버리스는 사용자가 관리할 서버가 없다는 것이다. 단순히 서버가 없다고 착각하면 안된다. Lambda는 장점이 많다. 비용 : 코드가 실행될 때만 요금이 발생한다. 보안 : 시스템적인 것은 AWS에서 관리하므로 사용자는 Lambda로 사용할 코드만 관리하면 된다. 가용성 : 복수의 가용 영역(AZ)에서 실행된다. 사용자가 설정하지 않아도 고가용성, 장애 대응성이 유지된다. 확장성 : 동시에 다수의 처리를 해야 하는 경우 AWS가 관리하는 처리용 인스턴스가 시작되면서 확장된다. "사용한 컴퓨팅 시간에 대해서만 요금을 지불하면 되고 코드가 실행되지 않을 때는 요금이 부과되지 않습니다. Lambda를 사용하여 사실상 모든 유형의 애플리케이션 또는 백엔드 서비스의 코드를 실행할 수 있고 ..

Spring

서버 템플릿 엔진 - Handlebars

서버 템플릿 엔진 JSP, Freemarker, Velocity는 한동안 업데이트가 안되고 있다. Springboot는 위 같은 엔진을 권장하지 않고, Thymeleaf를 권장하고 있다. 하지만 Handlebars를 사용해보는 것도 좋다. 이의 장점은 문법이 다른 템플릿 엔진보다 간단하고, 로직 코드를 사용할 수 없어 View 역할과 서버의 역할을 명확하게 분리할 수 있다. 템플릿 엔진은 일반적으로 비즈니스 로직과 연관되지 않는 것이 좋다. build.gradle 의존성 추가 implementation 'pl.allegro.tech.boot:handlebars-spring-boot-starter:0.3.4'

Spring

TestContainers

https://www.testcontainers.org/ TestContainers는 Junit Test를 지원하는 Java Library로, Docker 컨테이너를 사용할 수 있도록 일회용 인스턴스를 제공한다. 일회용이니 독립적이고 멱등성있는 환경을 얻을 수 있다. 장점 - 테스트할 때만 컨테이너를 띄우기 때문에 계속해서 메모리를 차지하지 않는다. - 테스트 환경 DB가 필요없기 때문에 추가 리소스가 필요하지 않다. 단점 - 테스트를 실행할 때마다 도커 컨테이너를 생성하고 세팅하는 작업이 추가된다. - 가벼운 테스트라도 도커 컨테이너를 생성하고 세팅하는 시간이 있어 시간이 소요된다. build.gradle 의존성 추가 testImplementation 'org.testcontainers:spock:1...

공부하면서 얻은 지식들

Docker 도커

도커 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고, 배포하고 실행할 수 있도록 설계된 도구이며 컨테이너 기반의 오픈소스 가상화 플랫폼 어플리케이션 환경에 구애받지 않고 손쉽게 배포 관리가 가능하다. 컨테이너 기반 배포 방식은 구글을 비롯해 대부분 서비스 회사가 컨테이너로 서비스 운영 중 컨테이너는 도커 이미지를 독립적인 공간에서 실행할 수 있게 해주는 기술이다. 도커는 왜 사용할까? 똑같은 일을 하는 서버가 2대가 있다고 하자. A서버는 1년 전에 구성했고 B서버는 방금 구성했다. 그럼 운영체제, 컴파일러 등의 조건이 같지가 않을 가능성이 높다. 도커는 서버마다 동일한 환경을 구성해주기 때문에 이러한 문제를 해결할 수 있다. 또, auto scaling에 유리하다. auto scaling ? 서버 ..

객체지향(Java)

Java 자바 기술면접 질문 정리 (2)

HashMap, HashTable, ConcurrentHashMap 차이 모두 Map 인터페이스의 구현체 HashMap - key와 value에 null을 허용한다. - 동기화를 보장하지 않는다. - thread-safe하지 않아 싱글 스레드 환경에서 사용하는 것이 좋다. - 속도는 빠르지만, 신뢰성과 안정성이 떨어진다. HashTable - key와 value에 null을 허용하지 않는다. - 동기화를 보장한다. - thread-safe하기 때문에, 멀티 스레드 환경에서 사용할 수 있다. - 데이터 무결성을 보장한다. ConcurrentHashMap - key와 value에 null을 허용하지 않는다. - 동기화를 보장한다. - thread-safe하기 때문에, 멀티 스레드 환경에서 사용할 수 있다. ..

공부하면서 얻은 지식들

개발자 소통 언어

다양한 사람들과 이야기하면 종종 줄임말을 들을 수 있다. 이처럼, 개발자끼리 소통을 할 때 사용하는 약어들이 있다. AFAIK [ as far as I know ] : 내가 기억하는 한, 내가 알기로는 ASAP [ as soon as possible ] : 가능한 빨리 FYI [For your information ] : 참고로 IMO [ In my opinion ] : 제 생각은 IOW [ In other words ] : 다시 말하면, 바꾸어 말하면 LGTM [ look good to me ] : 괜찮아, 좋아 SGTM [ sounds good to me ] : 괜찮아, 좋아 PR을 날리고 상대방이 PR에 대한 다른 의견이 없으면, LGTM과 SGTM을 응답으로 자주 받을 수 있다. TL;DR [ t..

CS/네트워크

DHCP

DHCP [Dynamic Host Configuration Protocol] 동적 호스트 구성 프로토콜 IP 주소는 전 세계 안에서 해당 단말을 식별하기 위해 사용된다. DHCP는 IP 주소를 네트워크에 연결된 장치에 자동으로 할당한다. 이것이 없으면 수동으로 IP 설정을 하기 때문에, 시간이 많이 소요되고 오류 발생 위험이 있다. DHCP는 네트워크가 연결되기 위해서 IP 주소를 할당하고, DNS를 설정하고 라우터를 설정한다. 장점 DHCP는 동일한 IP 주소가 할당된 다른 사용자 사이의 충돌을 방지해준다. 또, DHCP로 IP 주소의 유연성을 얻고 효율적인 네트워크 관리가 가능하다. IP 주소 할당 방식 동적 할당 [Dynamic Allocation] : 주소를 할당받은 장치가 주소가 필요없다는 메시..

화서동 병아리
'분류 전체보기' 카테고리의 글 목록 (2 Page)