본문 바로가기

전체 글

(47)
[Android] 클린 아키텍처 VS 구글 권장 아키텍처, MVVM 패턴 🫧 클린 아키텍처 로버트 C. 마틴에 의해 소개된 소프트웨어 시스템의 구조를 설계할 때 지켜야 할 원칙과 방법을 정의한 개념 소프트웨어의 유지보수성, 테스트 용이성 및 모듈 간의 분리를 강조하여 안드로이드 애플리케이션을 더 구조화된 방식으로 개발할 수 있도록 돕는다. 구글 권장 아키텍처와 차이점이라고 한다면, 도메인 레이어를 필수로 설계해야 한다는 것 각 계층이 분리되어 있고 계층 간 의존성이 낮아 유지보수가 쉬움 의존성을 주입하여 유닛 테스트 및 통합 테스트를 수행하기 용이 각 계층이 자체 역할을 하여 코드의 재사용성이 높아짐 🕶️ 구글 권장 아키텍처 Google에서 공식적으로 권장하는 Android 앱 개발 방법론 Clean Architecture 와 비슷하게 구성될 순 있지만, 단 1가지의 차이점이..
[Server] ERD(Entity Relationship Diagram) Entity(개체) 관리하고자 하는 정보의 실체 사람, 객체, 개념 테이블이 Entity로 정의된다 모든 Entity는 하나 이상의 식별자(UID)를 지녀야 한다 자신을 정의하는 Key가 없는 객체, 단독으로 존재할 수 없고 다른 개체에 의존해야 하는 객체 → Weak Entity Attribute(속성) Entity를 구성하고 있는 구성 요소 데이터 타입을 명시해야 한다 Key Attribute 고유한 값을 가진 Attribute 다른 객체들과 중복되지 않아 객체를 식별하는데 사용 Composite Attribute 독립적인 Attribute들 ex ) 00시, 00동, 00아파트 등 독립적인 Attribute 네 개가 모여 생성된 주소 Multi-Valued Attribute 하나의 Attribute..
[Server] Web Sever & WAS Web Sever : 클라이언트가 웹 브라우저에서 HTTP 프로토콜 기반의 요청을 하면, 그 요청을 받아서 정적 컨텐츠를 제공하는 서버 *정적 컨텐츠? 단순 HTML 문서, CSS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠 컴퓨터는 웹서버에게 “데이터 혹은 어떤 파일을 달라” 고 하고 웹서버는 그것을 응답해준다 즉, 컴퓨터는 웹서버하고만 통신한다 웹 서버는 정말 단순함 역할이 뭐냐, A파일을 달라고 컴퓨터가 요청하면 웹 서버는 A파일이 어디있는지 찾고 그 파일을 준다 🤔 웹 서버가 정적 컨텐츠가 아니라 동적 컨텐츠 요청을 받는다면? WAS에 해당 요청을 넘겨주고, WAS에서 처리한 결과를 컴퓨터에 전달한다 결론 1. 정적 컨텐츠 제공 2. 동적 컨텐츠 요청을 전달 ex ) NginX, Apache WA..
[Server] 시스템 콜(System Call) 시스템 콜(System Call) 시스템 호출이라고도 하며, 운영 체제의 커널이 제공하는 서비스에 오는 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스 사용자 프로그램이 디스크 파일에 접근할 때 화면에 결과를 출력하는 등의 작업이 필요할 때 사용자 프로그램이 특권 명령의 수행을 필요로 할 때 → 운영체제에게 특권 명령의 대행을 요청하는 것이 시스템 콜 각 시스템 콜에는 번호가 할당된다 시스템 콜 인터페이스는 시스템 콜 번호와 시스템 콜 핸들러 함수 주소로 구성되는 시스템 콜 테이블을 유지한다 운영체제는 자신의 커널 영역에서 해당 인덱스가 가리키는 주소에 저장되어있는 루틴을 수행한다 작업이 완료되면, 인터럽트를 발생시켜서 CPU에게 수행 완료를 알린다 시스템 콜이 발생했을 때, 경우에 따라 추..
[AWS] AWS에 대하여 AWS (Amazon Web Service) : 아마존에서 개발한 클라우드 컴퓨팅 플랫폼 클라우드 컴퓨팅이 뭔데? 인터넷을 통해 IT 리소스를 온디맨드로 제공하는 서비스 *온디맨드 : ICT 인프라를 통해 소비자의 수요에 즉각적으로 맞춤형 제품 및 서비스를 제공하는 경제활동 여기에서 IT 리소스는 서버, 스토리지, 네트워크 같은 IT 기반 자원이다 원하는 만큼 사용하고, 사용한 만큼 지불하자 물리적인 데이터 센터나 서버를 구입할 필요가 없다 클라우드 공급자로부터, 필요에 따라 기술 서비스를 제공받자! 클라우드 컴퓨팅을 쓰는 이유 광범위한 기술에 쉽게 접근하고 빠르게 배포한다 필요한 만큼 리소스 용량을 줄이거나 확장한다 물리적인 고정 비용이 없고 가변 비용을 사용한 만큼 지불한다 관리에 들어가는 비용이 따..
[Spring] 스프링 입문 - AOP AOP가 필요한 상황 모든 메소드의 호출 시간을 측정해야 한다면? public Long join(Member member) { // 메서드 호출 시간 측정 long start = System.currentTimeMillis(); try { validateDuplicateMember(member); // 중복 회원 검증 memberRepository.save(member); return member.getId(); } finally { long finish = System.currentTimeMillis(); long timeMs = finish - start; System.out.println("join = "+ timeMs + "ms"); } } 핵심 비즈니스 로직은 핵심 관심 사항 이고 이렇게 시간을..
[Spring] 스프링 입문 - JPA JPA JPA를 왜 쓰는 걸까? 기존 반복 코드, 기본적인 SQL 까지 JPA가 직접 만들어서 실행해준다 SQL, 데이터 중심 설계에서 객체 중심 설계로 패러다임 전환 개발 생산성을 크게 높일 수 있다 application.properties 설정 spring.jap.show-sql=true spring.jpa.hibernate.ddl-auto=none 위의 세팅을 해준다 ORM O : 객체 R : 관계형 데이터베이스 M : 매핑 객체와 관계형 데이터베이스를 매핑한다! 💡 매핑을 위해 Entity 어노테이션 사용 @Entity public class Member { Member는 JPA에서 관리하는 엔티티가 된다 PK 매핑 쿼리에 id를 넣는 것이 아니라, DB에 값을 넣으면 DB가 자동으로 id를 생성..
[Spring] 스프링 입문 - 스프링 통합 테스트, 스프링 JDBC Template 스프링 통합 테스트 이전에 했던 테스트는 순수한 자바 코드에 대한 테스트이다, 이제는 스프링과 엮어서 테스트를 해보자 Test 클래스의 어노테이션으로 SpringBootTest 선언 그리고, Transactional 도 선언 @SpringBootTest @Transactional 이제 beforeEach는 지워도 된다! 왜? @BeforeEach public void beforeEach() { memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); } 이 코드는 직접 객체를 생성하지만 이제는? 스프링 컨테이너에서 멤버 리포지토리를 가져와야 한다 테스트는 테스트만 하면 되기 때문에..