Salseforce 개발을 위해서는 어떤 언어를 배워야할까?
(Salesforce Mentor - Walters954)
03:43 부분에서 Apex라는 언어를 사용한다고 친절하게 말씀해주셨다.
Apex란?
Salseforce사에서 자체 개발한 개발 언어이며,
Apex는 강력한 형식의 개체 지향 프로그래밍 언어로서, 개발자는 이를 사용하여 Lightning PlatformAPI에 대한 호출과 함께 Lightning 플랫폼 서버에서 흐름 및 트랜잭션 제어문을 실행할 수 있습니다. Java와 비슷하고 데이터베이스 저장 프로시저처럼 작동하는 구문을 사용하는 Apex를 통해 개발자가 버튼 클릭, 관련 레코드 업데이트 및 Visualforce 페이지를 비롯한 대부분의 시스템 이벤트에 비즈니스 논리를 추가할 수 있습니다. Apex 코드는 웹 서비스 요청 및 개체에 대한 트리거에서 시작될 수 있습니다.
https://help.salesforce.com/s/articleViewid=sf.code_about.htm&type=5개체 지향 언어이면서 Java문과 비슷하고 데이터베이스 작동시키는 구문을 사용하는 언어라는 걸 알았다.
위 사이트에는 Salseforce의 8가지 이점을 제시했다.
1. 사용화 친화성
2. 간단한 테스트
3. 멀티테넌시(다중차용)
4. 임베디드 지원
5. 트리거 기능을 통한 간단한 업데이트
6. 안전한 플랫폼
7. Salseforce 백엔드 접근
8. Confident Deployments (확실한 구축)
프로그래밍은 배우는 데 오랜 시간이 걸리고 습득하는 데 몇 년이 걸립니다. SalesforceApex는 보다 사용하기 쉬운 언어를 이용하여 이 학습 기간을 단축하고자 합니다.
이 방법 중 하나는 구문과 시맨틱을 이용하여 새로운 요소를 도입하는 것입니다.
프로그래밍 언어 구문이 어떤 문자열이 유효한 프로그램을 구성하는지 기술하고, 구문적으로 유효한 프로그램이 무엇을 의미하는지, 그것이 무엇을 하는지 설명하고 있습니다.
이로인해 간결하고 쓰기 쉬운 코드를 만드는 데 도움이 됩니다.
시맨틱(Semantics)이란?
프로그래밍에서 시맨틱이란 코드 조각의 의미를 나타냅니다. 코드가 화면에 보여지는 시각적인 면보다는 코드가 작동하는 목적이나 역할은 무엇인지 나타내는 것입니다.
참고: https://developer.mozilla.org/ko/docs/Glossary/Semantics
부정한 코드는 광범위하게 영향을 미칠 수 있습니다. 새로운 코드를 도입하려면 모든 것이 적절하게 배치되고 쓰이도록 품질 관리 절차를 밟아야 합니다.
Apex는 유닛 테스트 작성 및 실행을 제공합니다
사용자는 테스트 결과를 분석하는 보고서를 받습니다. 분석된 코드의 범위를 설명하고 어떤 부분을 보다 효율적으로 만들 수 있는지 제안한다.
유닛 테스트는 플랫폼으로의 업그레이드를 통합하기 전에 Apex 코드 구조로 실행됩니다.
멀티 테넌시란 하나의 서버에서 여러 테넌트에게 서비스를 제공할 수 있는 소프트웨어의 단일 인스턴스를 말합니다. 이를 통해 공급자는 한 번 업데이트를 수행하고 모든 세입자와 공유할 수 있습니다. 유지보수 비용 분담 등 기타 장점도 있습니다.
Apex는 멀티 테넌트 환경에서 작동합니다. 즉, 런타임 엔진은 삽입된 코드에 제한을 설정하여 공유 리소스를 지배하는 프로세스의 폭주를 방지합니다.
이러한 제한을 위반하는 것으로 판명된 코드는 오류 메시지로 채워져 실패합니다.
테넌트?
여러 클라이언트 조직을 의미하는 거 같다.
참고: https://soosun.tistory.com/660
단일 인스턴스?
인스턴스는 일반적으로 실행 중인 임의의 프로세스, 클래스의 현재 생성된 오브젝트를 가리킨다.
참고: https://ko.wikipedia.org/wiki/%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4
Salesforce는 풍부한 지원 기능으로 알려져 있습니다. 가장 경험이 적은 사용자라도 질문에 답하기 위해 필요한 지시를 내릴 수 있는 많은 기능이 준비되어 있습니다.
Salesforce에서는 Apex 전용 포괄적인 도움말 섹션을 제공합니다. Apex의 기본 레이아웃 설명과 코드 작성 방법, 디버깅, 변경 테스트, 스크래치 오거 관리에 대한 리소스가 있습니다.
새 코드를 Salesforce 익스피리언스에 통합할 경우 많은 가능성이 있습니다. 이러한 자원은 신인과 베테랑 모두를 혼란스럽게 하는 많은 상황을 안내합니다.
임베디드?
한국어로 '내장된','포함 된' 이라는 뜻이 있다.
참고한 글에 기반해서 임베디드는 예를 들어 선풍기처럼 스스로 생각하는게 아닌 사용자가 정해진 기능을 누르면 행동을 기능하게 무언가를 내장시키다 라는 뜻같다.
어떤 기계 안에 '제어'를 목적으로 하는 아주 작은 컴퓨터가 달려있다면 그게 바로 임베디드 시스템이다.참고: https://swev.net/43
시스템의 기능을 유지하기 위해 삽입, 업데이트 및 삭제가 필요할 수 있습니다. 이를 통해 기능을 커스터마이징하여 플랫폼을 최대한 활용할 수도 있습니다.
트리거는 특정 조건이 존재하는 경우 조작 실행, 조작 제한 또는 관련 레코드 변경에 사용할 수 있습니다. DML, SOQL, 커스텀 Apex 메서드를 실행하는 데에도 사용할 수 있습니다.
포인트 도구와 클릭 도구는 Salesforce에서는 매우 편리하지만 모든 것을 실행할 수는 없습니다. 트리거는 포인트 앤 클릭에서 사용할 수 없는 기능을 수행하는 데 사용할 수 있습니다.
SOQL이란?
Salseforce 데이터베이스에서 레코드 데이터를 가져오는 언어입니다.
SQL과 SOQL의 차이점
- SOQL은 SELECT 문으로 쿼리를 수행하는 데에만 사용됩니다.
- JOIN 절을 사용하여 테이블을 결합하는 대신, 관계 쿼리라고 하는 것을 작성합니다.
- GROUP BY 절 외에도 다른 그룹화 절을 제공합니다.
참고: https://trailhead.salesforce.com/ko/content/learn/modules/database_basics_dotnet/sql_to_soql
Salesforce는 사용자에게 제공할 수 있는 기능과 이점으로 널리 알려져 있습니다. 또한 플랫폼의 보안 수준에 대해서도 잘 알려져 있습니다. Apex는 Salesforce의 광범위한 범위 내에서 사용되므로 플랫폼의 보호 실드에 해당합니다.
정보와 메타데이터는 다양한 목적으로 사용할 수 있습니다. 메타데이터가 사이버 범죄자의 표적이 되는 경우가 많은 이유다. Apex의 모든 움직임과 이용에 대한 이 세부 정보는 보호해야 하며 Salesforce는 이를 실행합니다.
Salesforce 플랫폼 백엔드를 통해 프로세스의 기능을 개선하고 커스터마이징할 수 있습니다. 트리거의 효용에 대해서는 이미 설명했지만, 그 외에도 많은 것을 할 수 있습니다.
익명 블록을 스토리지 없이 시작 가능합니다. 이것은 신속한 수정이나 이메일 전송에 도움이 됩니다.
기타 잠재적인 도구는 다음과 같습니다.
익명블록?
이름이 없는 블록을 의미 하며, 실행하기 위해 프로그램 안에서 선언 되고 실행시에 실행을 위해 PL/SQL 엔진으로 전달 된다.
선행 컴파일러 프로그램과 SQL*Plus 또는 서버 관리자에서 익명의 블록을 내장 할 수 있다.참고: http://www.gurubee.net/lecture/1343
아래 블로그에서 사용하는 방법을 알 수있다.
참고: https://thebook.io/006696/part02/ch08/01/02/
새로운 코드 라인을 통합할 때 정확성이 적절하게 검증되지 않은 경우 비생산적일 뿐만 아니라 위험도 발생합니다.
도입 전에 코드를 테스트하는 것은 잠재적 오류를 검출하고 기존 코드와 어떻게 연동되는지 확인하는 가장 좋은 방법입니다.
Apex는 테스트를 표준 동작 순서로 통합함으로써 적절한 코딩의 실행을 확립하는 데 도움이 됩니다. 개발자(coder)들은 신뢰성이 높고 더 나은 코드를 생성할 뿐만 아니라 유리한 제품을 용이하게 하는 방법을 확립합니다.
여기까지 Salseforce의 개발언어 Apex에 대해서 알아보고 장점을 한번 쭉 보았는데, 아직 이해가 안가는 부분들도 있었고, 더 세분화 해서 공부할 부분들(SOQL, 멀티테넌트 외 단일테넌트, 익명블록)도 많이 느꼈다.
그리고 trailhead도 학습 부분도 공부 해야겠다.